默认类型is uint64
但下面显然需要更大的支持,您可以看到不支持数字536870915
(二进制为100000000000000000000000000011,长度为30位)以上bitget命令。所以
如何让bitget命令使用如下所示的大输入?
输入
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.
答案 0 :(得分:3)
您将dec2bin(find(hhhh)-1)
的输出传递给str2num
。这会直接将1和0的字符串转换为double:9.999999999999999e+28
。我猜这不是你想要的。
如果您只是想获得536870915
的第二位,为什么不使用:
bitget(find(hhhh)-1,2,'uint64')
另一方面,我认为您也可以使用它(可能更慢,但如果您已经转换为字符串表示,它可能会与其余代码一起使用):
b = dec2bin(find(hhhh)-1);
str2double(b(end-1))
看起来你正试图结合两种方法。