原码、补码和反码

来源:互联网 发布:淘宝店铺自定义模块 编辑:程序博客网 时间:2024/05/18 12:38

计算机系统,数值一律用补码来存储.

主要原因:补码,可以将符号位和其它位统一处理


原码

概念:一种计算机中对数字的二进制定点表示方法

编码规则:符号位0表示正,1表示负.数值部分用该数绝对值的二进制数表示

假设:机器长为8位

符号
01111111+1270 0 0 0 0 0 1 +100000000+010000000-010000001-111111111-127
10000000-128

反码

编码规则:符号位0表示正,1表示负

正数的反码是其本身

负数的反码在原码基础上,符号位不变,其余按位取反

假设:机器长为8位

符号
01111111+12700000001+100000000+011111111-011111110-110000000-12711111111-128


补码

 编码规则:符号位0表示正,1表示负

正数的补码是其本身

负数的补码是在原码基础上,符号位不变,其余各位取反,最后+1.<反码末位加1.>

假设:机器长为8位.

符号
01111111+12700000001+100000000+000000000-011111111-110000001-12700000000-128

补码进行加减运算方便,允许符号位和数值一起参与运算.无论求和求差,运算一律只做加法.若最高位有进位,则进位舍弃.

-5   [-5]原 =  1000 0101   
      [-5]反 =  1111 1010    
      [-5]补 =  1111 1011
   0011  (3)  + 1111  (-1)--------------   10010  (2)




在 8 位的补码系统中,可以表示的最大正数为 28−1-1 = 127,可以表示绝对值最大的负数为 -28−1 = -128 


0 0
原创粉丝点击