我有以下号码: 100000100000001
我使用以下方法获取1s的位:
long number=100000100000001;
for(int i=0;i<=15;i++)
if ((( number>>> i) & 1) != 0)
//if ((number.shiftRight(i).and(new BigInteger("1"))).intValue() != 0)
{
LogMessage("Bit 1: "+i);
}
我明白了:
位1:0
比特1:8
比特1:13
显然是错误的。
我用BigInteger尝试了它,结果相同。
我的做法出了什么问题?
答案 0 :(得分:1)
使用
long number = 0b100000100000001;
请参阅https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html和https://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html。