因为int类型就是32位啊,所以要移位32次正好遍历所有位。运行结果不一致应该是你算错啦。

解决方案 »

  1.   

    同意 allen_zh(阿愣) 的说法。至于到底是左移还是右移,在你的这个例子里无所谓。
      

  2.   

    被你误导了,哪里是而且j要进行左移位,而是1要移动j位
    以下是1<<j的结果,这个问题就清楚了
    01<<j=-2147483648
    01<<j=1073741824
    01<<j=536870912
    01<<j=268435456
    01<<j=134217728
    01<<j=67108864
    01<<j=33554432
    01<<j=16777216
    01<<j=8388608
    01<<j=4194304
    01<<j=2097152
    01<<j=1048576
    01<<j=524288
    01<<j=262144
    01<<j=131072
    01<<j=65536
    01<<j=32768
    01<<j=16384
    01<<j=8192
    01<<j=4096
    01<<j=2048
    01<<j=1024
    01<<j=512
    01<<j=256
    01<<j=128
    11<<j=64
    01<<j=32
    01<<j=16
    01<<j=8
    01<<j=4
    01<<j=2
    01<<j=1