补码概述

2016/01/15 10:39
阅读数 158

补码可以查看两篇文章,一个是转载的,其中截取了一部分,第二个是百度百科的,为什么要使用补码,就知道了,我讲一下这个片段。

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

相乘的运算,以及其他的运算,也可以自行百度。

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
在线直播报名
返回顶部
顶部