Java位偏移奇怪的结果

时间:2016-05-09 13:43:54

标签: java

我有以下号码: 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尝试了它,结果相同。

我的做法出了什么问题?