-1>>num  == -1>>(num%(-1.length))  == -1>>0  == -1
同理>>>

解决方案 »

  1.   

    -1>>num  == -1>>(num%(-1.length))  == -1>>0  == -1不需要考虑这个公式Integer.toBinaryString(-1) = 11111111111111111111111111111111根据>>n的操作,向右移动n位,原来的高位不变,所以无论n等于几,都是-1>>>则不然,
    >>>n的时候,依然是右移动n位,但高位补0
    比如 -1 >> 3 
    11111111111111111111111111111111 (-1)
    00011111111111111111111111111111 (536870911)
      

  2.   

    若如楼上所说的话, -1>>>32=0.
    我觉得那个公式比较能说明问题。
    多谢各位。