目录
1.移位操作符
---移位操作符移动的是二进制的补码
<< 左移操作符
>> 右移操作符
原码、反码与补码
在了解移位操作符以前,我们需要先了解整数二进制的表示,在内存中,为了方便计算,整数是通过二进制补码储存的:例如数字int a =15 原码如下:
原码:00000000 00000000 00000000 00001111 (最高位为符号位,0表示整数,1表示负数)
正数的原码,反码,补码相同
-15的原码 10000000 00000000 00000000 00001111
反码 111111111 111111111 111111111 11110000 (符号位不变,其他位按位取反)
补码 111111111 111111111 111111111 11110001 (反码加1)
左移操作符
基本规则:左边丢弃,右边补0
例如:正整数4在内存中的原码反码与补码如下:
00000000 00000000 00000000 00000100 左移一位后获得
00000000 00000000 00000000 000001000 (右边用0补齐)
那么负数呢? 我们以-4为例,-4的原码反码补码如下
原码 10000000 00000000 00000000 00000100
反码 111111111 111111111 111111111 111111011
补码 111111111 111111111 111111111 111111100
左移一位获得
111111111 111111111 111111111 1111111000
由于求值使用的是原码,因此要把补码转化为原码,转化后如下
10000000 00000000 00000000 00001000 故结果为-8
<