您的位置:首页 > 其它

补码概述

2016-01-15 00:00 501 查看
摘要: 补码

补码可以查看两篇文章,一个是转载的,其中截取了一部分,第二个是百度百科的,为什么要使用补码,就知道了,我讲一下这个片段。
2、补码:利用溢出,我们可以将减法变成加法:
对于十进制数,从9得到5可用减法:
9-4=5 因为4+6=10,我们可以将6作为4的补数
改写为加法:
+6=15(去掉高位1,也就是减10)得到5.
对于十六进制数,从c到5可用减法:
c-7=5 因为7+9=16 将9作为7的补数
改写为加法:
c+9=15(去掉高位1,也就是减16)得到5.
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
- 1的原码为 10000001
- 1的反码为 11111110
+ 1
- 1的补码为 11111111
0的原码为 00000000
0的反码为 11111111(正零和负零的反码相同)
+1
0的补码为 100000000(舍掉打头的1,正零和负零的补码相同)
上面这部分讲的是为什么要用补码,补码的实际用处,百科中讲的是理论前面一小段,这段话中举的例子非常好,负数的补码是怎么获取的,就是取正---然后用他的大数去减他,比如8位的就是用(100000000)去减他。然后怎么演变成取反加一的?就是先将10000000-1,然后就变成了取反加一,刚开始减1了,最后肯定需要加1.
记住一下:反码只是过渡的产品,一个中间定义,补码才是结果。

另外附上:
“补充码”前面补数时候直接补充首位就ok,也就是说,0就补充0,1就直接补充1就ok了。这个补充是在补码的基础上。
(全是使用吧补码做运算)正数+正数需要补零,负数加正数不需要,负数+负数先补1,防止超出范围,也就是说,每一次相加,最好是先补位。
学习这个注意一点:1.由来,补码是怎么来的,反码是辅助;2.存在形式,怎么存储的,也就是关系;3计算,也就是运行,怎么加-*除。
[X + Y]补 = [X]补 + [Y]补 ,一个数和另外的一个数相加,直接就这两个数的补码相加的补码就ok了。

扩展阅读:http://blog.csdn.net/xiaofei2010/article/details/8806951
相乘的运算,以及其他的运算,也可以自行百度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: