左移右移运算符 & ~取反运算符

1、左移右移运算符:

二进制运算的运算符号。
"<<“和”>>"
"<<"左移:其实就是x2的移动位数的次幂
">>"右移:就是除以2的移动位数的次幂。
“>>”和“>>>”
“>>”:最高位补什么,有原有数据的最高位值而定。
如果最高位是0(代表是正数),右移后,用0补空位。
如果最高位是1(代表是负数),右移后,用1补空位。

可能你对负数右移之后用1补空位的结果为什么会等于负数除于2,我们来举个例子:

负数:-4

原码:1000 0100(最高位代表符号位,我们简单的用8位来模拟)

反码:1111 1011(反码除了符号位不取反,其他都取反)

补码:1111 1100 (补码=反码+1)

-4右移一位之后

补码:1111 1110

反码:1111 1101(反码=补码-1)

原码:1000 0010(结果就是-2)

注意:正数的原码、反码、补码都一样


“>>>”:无论最高位是什么,右移后,都用0补。

 

2、~取反运算符

按位取反:二进制每一位取反,0变1,1变0。

~9的计算步骤:
转为原码:0 1001
计算补码:0 1001
按位取反:1 0110

1 0110转为原码(注意现在它是一个负数了):

反码:1 0101

原码:1 1010
符号位为1是负数,即-10

 

~-9的计算步骤:
转二进制:1 1001
计算补码:1 0111
按位取反:0 1000

0 1000转为原码:

反码:0 1000

原码:0 1000(也就是8)

 

posted @ 2021-08-06 14:18  kongbursi  阅读(2263)  评论(0编辑  收藏  举报