默认类型is uint64
但下面的显然需要更大的支持,您可以看到上面的 bitget 命令不支持数字 536870915
(二进制为 100000000000000000000000000011,30 位长度)。所以
How to get bitget command working with large inputs like the below?
输入
hhhh=sparse([],[],[],2^40+1,1);
hhhh(536870915)=1;
bitget(str2num(dec2bin(find(hhhh)-1)),2,'uint64')
输出
Error using bitget
Double inputs must have integer values in the range of ASSUMEDTYPE.
最佳答案
您将 dec2bin(find(hhhh)-1) 的输出传递给 str2num
。这直接将一和零组成的字符串转换为 double 值:9.999999999999999e+28
。我猜这不是你想要的。
如果您只是想获取 536870915
的第二位,为什么不使用:
bitget(find(hhhh)-1,2,'uint64')
另一方面,我认为您也可以使用它(可能会慢一些,但如果您已经转换为字符串表示形式,它可能会与您的代码的其余部分一起使用):
b = dec2bin(find(hhhh)-1);
str2double(b(end-1))
您似乎正在尝试结合两种方法。
关于matlab - Bitget 需要处理大量输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304216/