那为什么在不发生溢出的情况下,计算结果会自动变换为正确的0,1值,即表示为其该有的符号位功能!!!
追答根本就不存在这个所谓的符号位 !!!
补码理论,适用于任何的进制。
只有二进制,才被搞计算机的,硬是瞎编出来一个符号位,然后还说,符号位也参加运算。
他们就是敢于自己打自己的嘴巴。
--------
你想像一下,有一个小孩,只认识 0~99,也不会做减法。
为了做减法,你可以告诉他:-1,可以用+99 来代替:
24 - 1 = 23
24 + 99 = (1) 23
忽略进位,+99 和-1,功能是不是一样的?
那么,98,就能当做-2;
97,也就是 -3;
……
50,就是 -50。
这些正数,都可以代替负数使用。
这些正数,就称为:《负数的补数》。
求补数的公式,是: 补数 = 10^n + 负数。
--------
八位二进制是:0000 0000 ~ 1111 1111(十进制 255)。
那么,255,就能当做-1 来使用;
254,就是 -2;
……
128,就是-128。
由此,就可以推出《补码定义式》:
X < 0 时,[X]补 = 256 + X。
通用的形式,是:[X]补 = 2^n-| X |,
n 是二进制的位数。
而正数,则必须用原数进行计算,不许进行任何转换。
因此,也有人说,正数本身就是补码。
--------
128 ~ 255,其二进制的最高位是 1,这就被他们吹嘘成了符号位。
但是,50~99,在十进制中,也是代表负数的,他们就没有说的了。
补码理论,适用于任何的进制,你自己都可以归纳出来的。
比如,反转 90 度,可以用正转 270 度代替。 270,有符号位吗?
钟表,倒拨 20 分,可以用正拨 40 分代替。 40,有符号位吗?
符号位,是根本就不存在的。
按照《补码定义式》来求补码,根本就不涉及原码、反码,也没有什么符号位。
----------
另外,关于补码的来源,有人说到了“模”。
其实,这也是一个诡辩。
所谓的“模”,其实,就是《周期》。
常说的角度,+270 = 360 + (-90);
钟表的分针,+40 = 60 + (-20);
三角函数,+3π/2 = 2π + (-π/2 );
三位十进制,补数 = 10^3 + 负数;
(所以,-1,就与 +999 等效)
16 位二进制,补码 = 2^16 + 负数;
(所以,-1,就与 65535 等效)
。。。
在上面各个算式中的正数,都是用《周期+负数》求出来的。
哪有什么“模”呀!
计算机专业的人,数学,普遍都没学好。
遇上弄不懂的,就自己胡乱编造一个词! 确实也唬了不少人。
本回答被提问者采纳