matlab - 在Matlab中提取嵌入在32位二进制数中的多个数字的最快方法是什么
问题描述
我有一个 32 位数字(uint32),其中包含以下方式的四个数字:
- Var1 在位 32:31
- Var2 在位 30:22
- Var3 在位 21:13
- Var4 在位 12:1
以下代码有效,但我想让它更快
Var1=bitshift(fourbytes,-30);
Var2_temp=bitshift(fourbytes,-21);
Var2=bitand(Var2_temp,511);
Var3_temp=bitshift(fourbytes,-12);
Var3=bitand(Var2_temp,511);
Var4=bitand(fourbytes,2^12-1));
例子:
fourbytes = 2149007896;
结果是
Var1=2;
Var2=0;
Var3=372
Var4=536
我试过类似的东西
Var1=bin2dec(num2str(bitget(fourbytes,32:-1:31)));
但这和 bi2de 一样慢得令人难以置信
bi2de(bitget(onebyte(1),32:-1:31),'left-msb');
是我用 C 编写这部分的唯一选择,还是有更好的方法我错过了?
解决方案
推荐阅读
- security - GCP 中 Windows 2016 服务器的 CIS 强化脚本
- functional-programming - Most efficient way to write big data structures to a file
- c# - 使用 XmlSerializer 向 xml 文件添加动态注释
- reactjs - 2checkout subscription 在 webhook 中发送订阅者的 UID
- flutter - Flutter:启用空安全性时,默认的“列表”构造函数不可用。列表
(); - python - 是否有任何 python 包可用于仅通过海路计算坐标之间的最短距离?
- android - 正在查看我的 Play 商店描述 A/B 测试?
- editor - XCode 12.5 - 如何在编辑器中禁用自动跳转
- ios - Apple:在 App Purchase Subscriptions Server Notifications 查看过去的历史记录
- python - TD Ameritrade API“获取期权链”捐赠
但我得到 JSONDecodeError: Expecting value?