(1)原码是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示值。
(2)正数的反码是其本身。负数的反码是在原码的基础上,符号位不变,其余按位取反。
(3)正数的补码是其本身。负数的补码是在原码的基础上,符号位不变,其余按位取反,最后加1。
(4)计算机进行符号运算时,会以补码表示,符号位和数字位会一起参与运算。
a-b实际转换为[a-b]补=[a]补+[-b]补
a为1111(后面60个0),1开头,所以为一个负数;补码为1001(后面60个0)
b为0111(后面60个1),0开头,所以为一个正数;补码为其本身。
-b为1111(后面60个1),补码为1000(后面59个0,最后有个1)
所以1001(后面60个0) + 1000(后面59个0.最后有个1) = 0001(后面59个0,最后有个1),发生了溢出,比如采用双高位判别法处理溢出,则补码1001(后面59个0,最后有个1)转换为原码为1110(后面60个1),即-(7 *2的60次方+1)=-(2的62次方+2的61次方+2的60次方 + 1)
答案:-(2^62+2^61+2^60+1)
a-b实际转换为[a-b]补=[a]补+[-b]补
a为1111(后面60个0),1开头,所以为一个负数;补码为1001(后面60个0)
b为0111(后面60个1),0开头,所以为一个正数;补码为其本身。
-b为1111(后面60个1),补码为1000(后面59个0,最后有个1)
所以1001(后面60个0) + 1000(后面59个0.最后有个1) = 0001(后面59个0,最后有个1),发生了溢出,将溢出舍去,将补码1001(后面59个0,最后有个1)转换为原码为1110(后面60个1),即-(7 *2的60次方+1)=-(2的62次方+2的61次方+2的60次方 + 1)
答案:-(2^62+2^61+2^60+1)
1111000000000000000000000000000000000000000000000000000000000000+
1000000000000000000000000000000000000000000000000000000000000001=
10111000000000000000000000000000000000000000000000000000000000001(高位溢出舍去)
则结果为
0111000000000000000000000000000000000000000000000000000000000001=
2^62+2^61+2^60+1
答案为C