简单解释补码为何需要取反加一
做而论道_CS:
用两位十进制计算时,舍弃进位,就是:减去一百。
所以,加上 99,再减 100,当然就是 “-1” 了。
计算机用的是二进制数。
八位二进制数是:0000 0000 ~ 1111 1111。
等价于十进制数:0 ~ 255。
如果出现进位,就是:2^8 = 256。
那么,加 255 (1111 1111),再减 256,也就是 “-1” 了。
同理:+254 (1111 1110),就是-2。
+253 (1111 1101),就是-3。
。。。 。。。
+128 (1000 0000),就是-128。
以上这些正数,就是【计算机中的负数】。
计算机专家,则称之为:“补码”。
这些正数(即补码)与其负数的关系,你一定可以看出来:
正数(即补码)= 256 + 该负数
一般化,就是:
正数(即补码)= 2^n + 该负数
n 是二进制补码的位数。
例:求-31 的八位补码,是多少?
解:256-31 = 225 = 1110 0001 (二进制)。
代替负数的正数(即补码),就这么求出来了。
简不简单?
意不意外?
但是,计算机专家,可不想让你弄的这么快当!
它们偏要跟你说:
机器数符号位原码反码补码取反加一...
谁要是跟着琢磨 “取反加一”,
显然,他就是在沟里蹲着呢!
|