[转]理解补码

突然看到一篇文章,刚好最近同学从头学起,觉得这个对补码的理解很本质了。

 

本文转载自:https://www.douban.com/note/223507364/

参考:https://www.zhihu.com/question/20159860/answer/21113783

刚刚转载的文章介绍了补码的介绍,但感觉对补码的理解还不是特别深刻,所以转载了此篇文章

正数补数即为本身,负数A【补】=模-绝对值(A)。

一个数加上另一个数(可以是正数也可以是负数),结果等于加上这个数的补数,若有进位则舍弃进位。

这么做的重大意义在于极大地方便了计算机进行数据处理,要知道对人而言减法并非难事,但用门电路实现就复杂得多了,减之前还要判断大小考虑次序。

只有结果不发生溢出,那么加上一个数的补码一定跟加上原数相同!

本文中最重要的一个概念是:对于一个负数而言,求其补码(取反加一),等于用这个负数加上了它的模

举个例子:对于八位的二进制数-56,它的模数256(2^8=256)。 -50 用二进制数表示是 1011 0010 [原码],最高位看成符号位。取反加1以后是 1100 1110

如果把最高位不看成符号位,那么表示的就是206。 206+50=256(模)

其实在计算机内部根本没有什么符号位。

posted @ 2018-11-08 11:28 拦路雨偏似雪花 阅读(...) 评论(...) 编辑 收藏