反码、反码、补码、

http://blog.csdn.net/bbirdsky/article/details/8962538

 

 

原码:1,001101
=>负数
=>
反码:1,110010(除符号位以外,各位取反)
=>
补码:1,110011(反码加一)
=>移码:0,110011(对补码符号位取反)
注意点:1,首先判断原码的正负,因为对于正数,其原码、补码
反码表示形式相同(符号位为0,数值部分与真值相同) 

 

概念介绍:

计算机中的信息都是以二进制形式表示的,数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负)。这就是机器数的原码了。设机器能处理的位数为8。即字长为1byte,原码能表示数值的范围为(-127~-0 + 0~127)256个。

 

有了数值的表示方法就可以对数进行算术运算。但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下(假设字长为8bits): 

 

例如: 1-2=-1

十进制\二进制

原码

反码

补码

1

0,0000001

0,0000001

0,0000001

-2

1,0000010

1,1111101

1,1111110

-1

1,0000001

1,1111110

1,1111111

 

目标是:

使符号位能与有效值部分一起参加运算,从而简化运算规则.

使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

进一步简化计算机中运算器的线路设计,所有减法转化成加法来运算

十进制: 1-2=1+-2

二进制:

原码:  0,0000001+1,0000010=1,0000011 (结果为-3的原码,错了)

   

    0,0000001

+  1,0000010

-------------------- 

    1,0000011

 

原码对于人是挺好理解的,对计算机,就不是那么回事了。
就说加法,如果是两个数符号相同,那我可以不管符号,如果两个数符号不同呢,先要判断哪个数绝对值大,然后用大的减去小的,再加上大的的符号。很复杂。问题出在符号上,于是人们就想到要是能找到一个正数代替这个复数,使得最后答案不变,这样不就可以只用加法了吗?
别说,还真就找着了,就是反码

 

反码 :0,1111110+1,1111101=1,1111110(结果是-1的反码,是正确的)

 

      0,0000001

 +   1,1111101

---------------------

      1,1111110

 

 

定义0的原码反码和补码时,要注意计算机辨认这里的0需要分正0和负0,所以

(8位表示)原码:00000000   反码:00000000   补码:00000000                             

              10000000         11111111        00000000

+0的补码就是其原码,也就是说是0000 0000而已(对于8位来说)
-0的补码是其反码加1,其反码是1111 1111,当然,其反码加1后就是溢出一个进位后,仍然是0000 0000.

 

 

问题出现在+0和-0上,在人们的计算概念中零是没有正负之分的。于是就引入了补码概念。 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。

 

补码:1,1111110+1,1111110=1,1111111 (结果是-1的补码,是正确的)

 

       0,0000001

  +    1,1111110

----------------

       1,1111111        

 

 

 

 

 

 

所以补码的表示范围为:(-128~0~127)共256个。

 关于-128的补码,请看下面链接

http://wenku.baidu.com/link?url=fdU6vHO3z7OR1YuzoYUxf78RQbE8ggkwaTGbOYlA4PdzSJ5owdJ49HGKTGCSO52M4kelYq406uksDYhy23lifsXxvB-1n_ammtcPrXcmRee

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值