原码 补码 反码
数值在计算机中是以补码的方式存储的
正数的原码 补码 反码 都一样
负数:
原码:[-9] 11001
反码:[10110] 第一位不变,其余取反
补码:[10110]+1 [10111] 原码的基础上符号位不变,其余各位取反,最后加一,【反码的基础加一】。
取反:[~补码] :[01000]

取反的公式:-(a+1)

算法和逻辑左右移:

逻辑左移时,最高位丢失,最低位补0;

逻辑右移时,最高位补0,最低位丢失;

算术左移时,依次左移一位,尾部补0,最高的符号位保持不变。

算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;

循环左移时,将最高位重新放置最低位

循环右移时,将最低位重新放置最高位

使用循环操作的一个目的就是把每一位连续放到最左边,以判定数据的符号。如果要把一个数字的高位部分和低位部分互换,采用一位操作就很方便,速度很快。

例如:

1010100010101
逻辑左移一位结果为 0101000101010

逻辑右移一位结果为 0101010001010

算术左移一位结果为 1101000101010

算术右移一位结果为 1101010001010

循环左移一位结果为 0101000101011

循环右移一位结果为 1101010001010

收藏 打印