补码与模

发布网友 发布时间:2022-04-24 14:32

我来回答

4个回答

热心网友 时间:2023-10-16 13:25

正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码

例:
-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1

你的问题:1后面16个0 减去 101后能得到13个1 和011
-5,本来是10000...101(最高位是符号位), 取反111...010, 加一,111...011。
这才是补码的意义所在。但是取反加一这个操作对于人类而言运算较为不便,
于是才有用个模去减去其绝对值。你会发现两个结果相等。
8位的模是10000000,16位模10000...

热心网友 时间:2023-10-16 13:25

a = b(mod c) 其实就是说 a 和b除以c得到的余数是相同的。 很明显同余关系对所有整数形成一个划分, 在每一类当中指定一个代表性的,就是 [0 c)区间里的那个。

如果把补码记录的看作是 (比如是8位的补码)关于256形成的所有同余类就容易理解补码的计算。 比如 11111111 这个同余类中的元素应该是所有跟255关于256同余的,也就是 ... -513, -257, -1, 255, 511, 767, ... 所以如果这是一个无符号整数,就代表255(正数中接近0的) , 如果这是一个有符号整数,就代表-1(整个同余类中最接近0的)。 同样的, 运算溢出之类的问题也容易理解了

热心网友 时间:2023-10-16 13:26

所谓的“模”,实际上,就是数学中常说的【周期】。

16 位二进制,范围是:0~65535。

加一加一。。。到了最大,再加一,就又从零开始。

所以,16 位二进制的周期,就是 65536=2^16。

写成二进制,就是:1 后面 16 个零。

8 位二进制,共有 256 个数,周期就是 256。

-----------

负数的补码,就是: 模 + 该负数。

(求补码,可以先用十进制计算,再转换到二进制。)

[-5]补=模+(-5)=65531=1111 1111 1111 1011(二进制)。

热心网友 时间:2023-10-16 13:26

在日常生活中,可知:

 时针,转一圈,周期是 12。倒拨 3 可以用正拨 9 代替。

 分针,倒拨 X 分,也可以用正拨 (60-X) 代替。

就是说,负数,可以用一个正数(补数)代替。

同理: 25 - 1 = 24

    25 + 99 = (一百) 24

舍弃进位,-1 ,就可以用 +99 代替,进行运算。

+99,就称为-1 的补数。

计算方法: 补数 = 周期(10^n) + 负数。

n 为位数。

计算机用二进制,补数,就称为:补码。

计算方法:负数的补码 = 模(2^n) + 负数。

n = 8 时,模 = 256,写成二进制就是:1 0000 0000。

所以,-5的八位补码就是:

  1 0000 0000-101 = 1111 1011。


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