c语言中的二进制补码

2024-12-01 14:00:28
推荐回答(3个)
回答1:

(1)正数的补码:与原码相同。
(2)好肆做负数的补码:符号位为1,其余位为该数绝对值的原码按位友衡取反;然后整个数加1。雹雀

回答2:

想要了解补码,还得从小学说起。

大概是在小学二年级吧,就学过进位了芦派慎。

两位十进制数是:0 ~ 99。

那么有:27 + 99 = (一百) 26

也可以:27 - 1 = 26

如果你忽略进位,依然保持两位数,这两种算法的功能,就是完全相同的。

如果在计算机中舍弃进位:

●  负数,就能用正数(即补码)代替;

●  用加法,也就实现了减法运算。

所谓的补码,就是一个【代替负数的正数】。

补码的来源,就是【舍弃进位】!

----------

在两位十进制数时,舍弃进位,就是减去一百。

因此,+99、-100,当然就陪敬是-1 了。

·

八位二进制数:0000 0000 ~ 1111 1111。

也就是十进制:0 ~ 255。

如果出现进位:2^8 = 256。

此时,+255 (1111 1111)、再舍弃进位,也就是-1 了。

同理,+254 (1111 1110),也就是-2。

。。。

以上这些正数,就羡码“计算机专家发明的补码”了。

你说可笑不?

而原本就是正数,当然就不用再用别的正数来代替了。

也可以说:零和正数的补码,就是它自己。

----------

补码的来源:就是【舍弃进位】!

所谓的:机器数真值符号位原码反码取反加一,都是忽悠!

回答3:

从外形来看,二进制数和二进制补码,是完全相同的,没有任何区别。

但是,采用不同的算法,就有不同的效果。

比如一个算式: 0010 + 1111 = (1) 0001。

你如果保留进位,这算式就是:2 + 15 = 17。

    式中的 0010、1111,都是一般的二进制数。

你如果舍弃进位,这算式就是:2 + (-1) = 1。

   启明 虚斗式中的 0010、1111,就都是二差旁磨进制补码。