-3 = 0xffff fffd (11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101 )
-3 >> 1 ==> 0xffff fffe (最后一字节 11111110)
0xffff fffe >>> 2 ==> 0x3fff ffff ( 首字节 00111111,最后一字节 11111111 )
0x3fff ffff << 1 ==> 0x7fff fffe (首字节 01111111,最后一字节 11111110 )结果是 0x7fff fffe 对应的正整数值,具体多少,不知道,去算一下吧。理由:自已去看一下什么叫补码表示,在Java 中int固定是8个字节
-3 >> 1 ==> 0xffff fffe (最后一字节 11111110)
0xffff fffe >>> 2 ==> 0x3fff ffff ( 首字节 00111111,最后一字节 11111111 )
0x3fff ffff << 1 ==> 0x7fff fffe (首字节 01111111,最后一字节 11111110 )结果是 0x7fff fffe 对应的正整数值,具体多少,不知道,去算一下吧。理由:自已去看一下什么叫补码表示,在Java 中int固定是8个字节
不过犯了一个常识性的错误:java里面int是四个字节,32位长,不是8个字节。
他说的结果是对的。
十进制是2147483646。
-3 >> 1 ==> 0xffff fffe (最后一字节 1110)
0xffff fffe >>> 2 ==> 0x3fff ffff ( 首字节 0011,最后一字节 1111 )
0x3fff ffff << 1 ==> 0x7fff fffe (首字节 0111,最后一字节 1110 )结果是 0x7fff fffe
2147483646