模运算与补码,完全不懂怎么求解的,请详细解答

发布网友 发布时间: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

建议你去慕课上学习一下 不是几句话能说明白的 牵扯很多

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com