PS:正数的原码、反码、补码都一致
原码
最高位表示符号位,其他位存放该数的二进制的绝对值
计算机原始的表示数值的方法,15的原码 0000 1111
反码(将对应正数的值取反)
负数的反码就是它的原码除符号位外,按位取反。
这样减法计算就可以用加法来代替,计算的结果如果是负值需要将结果取反才能得到正确的结果(据说计算机中减法的电路设计比较麻烦而且贵,后来移除掉了)
关于‘模’
“模”是指一个计量系统的计数范围。如时钟等。任何事物把首尾相连形成一个圆的时候就出现了模,退x步跟进max-x步能到达同一个位置。
补码
补码=反码+1
反码有一个问题
+0和-0现实世界中是同一个东西
+0(原码 0000 0000 反码 0000 0000)
-0(原码1000 0000 反码 1111 1111 补码 0000 0000)
但是反码表示的时候却不一样,+0和-0相加表示 0-0 没问题,但是非0和0的减法用加法来处理的话就不对了。
计算机中各种类型数也满足‘模’的规律,
所以 m - n 可以转换成 m + (max - n),“max - n” 就是 n 的补码,并且还有一个定理 “补码=反码+1”,所以就可以完全转换成加法运算,并且解决了 +0和-0表示不一致的问题。
网友评论