发布网友 发布时间:2022-04-24 14:32
共4个回答
热心网友 时间:2023-04-24 10:37
首先,对于以n位2进制数表示的正数及相反数(即负数),分别以补码形式表示后,补码之和等于2的n次方。
比如4位表示1和-1,补码分别为0001和1111,和为10000,确实等于2的4次方。这是字面上的结果,但物理硬件只有4位,“和”的最高位1被舍弃掉,剩下的4位是最终结果0。从数学的角度来说就是以2的4次方进行模运算(即除以16后求余数),结果为0。这符合1+(-1)=0的数学规则。
说了n多废话,只要利用第一段话的结论,逆过来做减法,不就可求负数的补码了吗?(正数的补码是其本身,不会有人头疼如何求正数的补码的)。
如4位时,-1的补码是10000-1=1111。你看书上三道例题,都是这么来做的,并不难,只是废话太多,把人绕晕了。
此外,还有从原码,反码得到补码的方式,不需要做减法,这可能是累加器得名的原因吧
热心网友 时间:2023-04-24 10:37
图中所写,是非常清楚而且正确的。
你首先要知道:补码,它就是补码,与原码反码无关。
你如果从“原码反码符号位”这条路来认识补码,就不能理解补码的意义。
补码的由来,源于日常所见的“补数”。
时针,转一圈的周期,是 12,倒拨 3 小时,可以用正拨 9 代替。
分针,转一圈的周期,是 60,倒拨 X,可以用正拨(60-X) 代替。
小孩子,只认识两位数:0~99,他的计数周期就是 10^2 = 一百。
那么,-1,他就可以用 +99 代替:
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位,加、减两种运算,功能完全相同。
上过中学,都知道,三角函数的周期是 2π ( 即 360° )。
那么,对于-90°,你也可以用 +270° 来求函数值。
------------------------------
从以上的日常知识可知:负数,可以用一个对应的补数(正数)代替。
它们之间的计算公式: 补数 = 周期 + 该负数。
有了补数,负数就可以改用正数来计算,加法,也就取代了减法。
在计算机中,借助于“补数”,就可以达到简化硬件的目的。
------------------------------
计算机使用二进制,补数,就改称为:补码。
对于八位二进制,其范围是:0000 0000~1111 1111(十进制255)。
其计数周期就是:2^8 = 256。
那么:
-1 的补码,就是 256-1 = 255 = 1111 1111。
-2 的补码,就是 256-2 = 254 = 1111 1110。
。。。
-128 的补码,就是 128 = 1000 0000。
(-128 没有原码和反码,用“取反加一”求补码,无从下手!)
求负数的补码,通用的公式,还是: 补码 = 周期 + 该负数。
计算机专业的专家,不懂什么是“周期”,就另外起名叫做“模”。
n 位二进制数的模,就是 2^n。其二进制,就是 1 后面有 n 个 0。
那么,某负数的 n 位二进制的补码,公式就是:2^n + 负数。
同理,( n + 1 ) 位二进制的补码,公式就是:2^(n+1) + 负数。
------------------------------
图中例 2.12,给定了一个负数,是:-2^(n-1)。
那么,其 n 位的补码,就是:2^n - 2^(n-1)。
因为,2^n = 2 * 2^(n-1)。
所以,2^n - 2^(n-1) ,就等于 2^(n-1) 。
写成二进制,就是:在 1 后面有 (n-1) 个 0。
----------
而-2^(n-1) 的 (n+1) 位补码,当然就是:2^(n+1) -2^(n-1)。
因为,2^(n+1) = 2 * 2^n = 2^n + 2^n = 2^n + 2 * 2^(n-1)。
所以,该补码,就等于 2^n + 2^(n-1)。
写成二进制,是两部分之和:
在 1 后面有 n 个 0 + 在 1 后面有 (n-1) 个 0。
最终就是: 1 1 ,在后面共有 (n-1) 个0。
------------------------------
以上这些,是关于补码的基本理论知识。
如果,你只会“原码反码符号位取反加一”,是学不会补码理论的。
热心网友 时间:2023-04-24 10:38
计算机中只有补码,并没有原码反码。
求补码,直接求即可,并不用绕到原码反码。
原码反码,就是一滩垃圾。
正常人,是不理会这些的。
可以参考:网页链接
另外,你的插图中,有个【[-0]补】,这种写法,也是错误的。
0,只有一个 0,并没有什么+0、-0。
+0、-0,这是原码反码的简写形式。
只有数,才能求它的码。
+0、-0 都已经是原码,怎么能再求“原码”的补码。
别忘了采纳。
热心网友 时间:2023-04-24 10:39
建议你去慕课上学习一下 不是几句话能说明白的 牵扯很多