有符号右移

正数有符号右移

首先计算4>>2

将4转为二进制

0000 0100

右移两位,符号位为0,所以高位置0得

0000 0001

转二进制得 1

所以 4>>2 =1

负数有符号右移

再来计算-4>>2

首先我们需要取得-4的补码 补码为反码+1

反码为正码按位取反

由正码0000 0100  取反得

1111 1011

再+1得

1111 1100

右移两位,符号位为1,所以高位置1得

1111 1111

此时减一得补码

1111 1110

补码转正码得

0000 0001

十进制为1,加负号得

-1

无符号右移

正数无符号右移

6>>>2

正数无符号右移

取6的二进制

0000 0000 0000 0000 0000 0000 0000 0110

右移2位,最高位置0

0000 0000 0000 0000 0000 0000 0000 0001

转为10进制得

1

负数无符号右移

-6 >>>2

先得6的二进制

0000 0000 0000 0000 0000 0000 0000 0110

按位取反,得反码

1111 1111 1111 1111 1111 1111 1111 1001

反码+1得补码

1111 1111 1111 1111 1111 1111 1111 1010

右移,高位置0得

0011 1111 1111 1111 1111 1111 1111 1110

转10进制得

1073741822

05-12 13:18