X=10010101
首先将X中的二进制数全部更换,即Y=01101010,也就是把原来的0换成1,原来的1换成0.
然后槐空明,把Y加1,即结果Z=Y+1=01101011.
为什么要加1呢?举个最简单的例子,按照变号操作,“0”变号操铅告作以后应该还是“0”,对吧。但是如果我们把“0”的二进制数更换以后,会发生什亏稿么呢?
A=00000000,更换后B=11111111
这样“0”就变成“-127”了,因为最左边的那一位二进制数是符号位(0代表正数,1代表负数),这样就会出问题,因此需要再加1,使得结果C=B+1=00000000
“变号操作”是指将一个整数,变成绝对值相同、但符号相反的另一个整数。
这就是:已知 X,求-X。
对于一个数值来说,只要把数值前面的正负号(+、-),变换一下即可。
如果这个数值,是用原码或反码表示的,你把最高位取反,就是变号了。
如果这个数值,是用补码表示的,则需要“全部取反再加一”。
原脊棚码 1001 0101,变号之后,其相反数的原码,就是 0001 0101。
补缺春码 1001 0101,变号之后,其相反数的补码,就是 0110 1011。伏野耐
---------
由此可知,把原码或反码的最高位,称为“符号位”是正确的。
对于补码来说,要想改变数值的符号,则需要改变补码所有的位。
所以,把补码的最高位,称为“符号位”是不准确的。