补码是一种数字表示法,常用于计算机中的二进制数运算。补码简化了负数的加法和减法运算,同时能够表示更广范围的整数。在补码系统中,正数和0的补码就是其本身,而负数的补码则是将其对应正数按位取反再加1。
文章目录:
在计算机系统中,数值,一律采用补码表示和存储。
原码和反码,计算机中,都是不存在的。
补码,其实,就是一个“代替负数”的正数。
使用了补码,计算机中就没有负数了,也就没有了减法运算。
使用了补码,可以简化算法,从而就能简化计算机的硬件。
原码和反码,都没有这种功能,所以,它们根本就没有用!
------------------------
补码(即正数),怎么能代替负数呢?
根源在于“计数系统的周期性”。
如果使用 2 位 10 进制数(0~99),计数周期就是 10^2 = 100。
此时,就可以有:
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位数,这两种算法,功能就完全相同。
+99,就能代替-1。
+98,也可以代替-2。
。。。
这些“代替负数的正数”,就可称为“负数的补数”。
关系式:补数 = 负数 + 10^n。
n 是补数的位数。
10^n 是 n 位数的计数周期。
-------------------------
这个关系式,在计算机中,也可以使用。
8 位 2 进制:0000 0000~1111 1111 (十进制 255)。
它们的计数周期是:2^8 = 256。
计算机用二进制,补数,就改称为:补码。
求负数补码的计算公式,也是: 补码 = 负数 + 周期。
-1 补码就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码是: 254 = 1111 1110。
。。。
正数,不可转换,必须直接参加运算。
所以,零和正数,并不存在补码。
-------------------------
用八位补码计算:5 - 7 = -2。
列竖式计算如下:
5 = 0000 0101
-7的补码 = 1111 1001
--相加-------------
得: (1) 1111 1110 = -2 的补码
舍弃进位,只保留八位,这就用加法,实现了 5-7。
-------------------------
补码和“符号位原码反码 ... ”,并无半点关系。
“符号位原码反码取反加一符号位不变”,数学不好的老外,才会用这些骚操作。
当你理解了“周期性”,就不必理会那些无聊的说法。
八位二进制正数的补码范围是0000 0000 ~ 0111 1111 即0 ~ 127,负数的补码范围是正数的原码0000 0000 ~ 0111 1111 取反加一(也可以理解为负数1000 0000 ~ 1111 1111化为反码末尾再加一)。
所以得到 1 0000 0000 ~ 1000 0001,1000 0001作为补码,其原码是1111 1111(-127),依次往前推,可得到-1的补码为1111 1111,那么补码0000 0000的原码是1000 0000符号位同时也可以看做数字位即表示-128,这也解释了为什么127(0111 1111)+1(0000 0001)=-128(1000 0000)。
在计算机中数据用补码表示,利用补码统一了符号位与数值位的运算,同时解决了+0、-0问题,将空出来的二进制原码1000 0000表示为-128,这也符合自身逻辑意义的完整性。因此八位二进制数表示范围为-128~+127。
拓展资料:
补码的特性:
1、一个负整数(或原码)与其补数(或补码)相加,和为模。
2、对一个整数的补码再求补码,等于该整数自身。
3、补码的正零与负零表示方法相同。
参考资料:
以上是问答百科为你整理的2条关于补码的问题,希望对你有帮助!更多相关补码的内容请站内查找。