口诀:正:全不变 负:除符号位外,各位取反加一
求-10的补码,如下:
1)取-10的绝对值;
3)对1010取反得1111 1111 1111 0101(这里假定一个整数占16位)
4)再加1得1111 1111 1111 0110;
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
常识:
正数的补码,是其本身。
负数的补码,就用正数,减一取反,即可。
比如,+10 的补码,就是:0000 1010。
下面求-10 的补码:
先减一:可得 0000 1001;
再取反:就是 1111 0110。
这就求出来了。
即:[-10]补 = 1111 0110。
----
在计算机中,只有补码,并没有原码反码。
原码、反码、符号位,求反加一,都是垃圾。
在计算机中,根本就没有这些方法步骤。
另外,-128 根本没有原码反码,拿什么求反加一呢?
----
补码,写成十进制,也是正确的。
那么,按照八位补码的定义式,可以得出:
如 X ≥ 0 (正数): [ X ]补 = X = 0 ~ 127;
如 X < 0(负数): [ X ]补 = 模 - | X | = 128 ~ 255。
当 X 的补码大于 127,X 就是负数了。
正数的补码,是其本身。
负数的补码,就用它的正数,减一取反,即可得到补码。
如+9 补码是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗?
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
不都是骗人的吗?