请教大神
-100 >>> -1
-100 >>> 1
如何计算的
【负数最高位为1,正数为0】
【-10转换为二进制数:
10转为2进制数--> 1010 --求反--> 0101 --加1--> 0110 --补位--> 1***1 0110
-10转换为二进制数:1111111111111111111111111111111111111111111111111111111111110110】
【左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。
故负数左移,有可能变成正数,但负数右移,肯定还是负数。(不能移动负数eg:>>-1)】
【举个例子说明一下运算过程
-100
1111111111111111111111111111111111111111111111111111111110011100
>>2
1111111111111111111111111111111111111111111111111111111111100111 -----> -25
>>1
1111111111111111111111111111111111111111111111111111111111001110 -----> -50
>>>1(>>>无符号即可忽略最高位,前面这串0写不写都是一样的,我写上是为了和-50对比)
0000000000000000000000000000000001111111111111111111111111001110 -----> 2147483598】
表示无符号右移,高位补0。先化成二进制-100就是11111111111111111111111110011100,右移一位就是1111111111111111111111111001110,化成10进制就是2147483598.至于>>>-1,用程序跑出来是1,具体不知道怎么解释。位运算右边可以为负的么?原谅我道行不够。。。