操作:
第一,补码加法
[xy]补码[x]补码[y]补码
例:x0110011,y-0101001,求[xy]的补码
[x]补码00110011[y]补码11010111
[xy]补码[x]补码[y]补码00110011110110001010
注意:由于计算机中运算器的位长是固定的,上述运算产生的最高位进位会丢失,所以结果不是100001010,而是00001010。
第二,补码减法
[x-y]补码[x]补码-[y]补码[x]补码[-y]补码
其中[-y]补码称为负补码,求负补码的方法是:将负数绝对值的原码的所有位逐位反转;然后在整数上加1。
示例:1(-1)[十进制]
1的原始代码000000001转换为补码:00000001。
-1的原始代码10000001被转换成补码:11111111。
1(-1)0
000000011111111100000000
000000000转换为十进制0。
00所以操作是正确的。
三、补码乘法
让被乘数[x]补x0.x1x2...xn-1,乘数[y]与y0.y1y2互补...yn-1。
[x*y]补数[x]补数×[y]补数,即补数乘以乘数(被乘数)等于补数的乘积。
正数的原码、补码、补码都一样,都等于它自己的负数。:符号的补码为1,其他位取反。最后一位加1是:符号,其余位取反,但最后一位不加1。也就是说,反码的最后一位加1就是补码-1011原码:11011反码:10100/负数。
1.在计算机系统中,数值总是用补码来表示(存储)。
主要原因是:使用补码,符号位和其他位可以统一处理;同时,减法也可以当作加法。此外,使用两种补充剂。
当代码表示的数相加时,如果最高有效位(符号位)有进位,则该进位被丢弃。
2.补码和原码的转换过程几乎是一样的。
数值的补码表示也分为两种情况:
(1)正数的补码:与原码相同。
比如9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值原码的逐位取反;然后在整数上加1。
比如-7的补码:因为是负数,所以符号位是"1"而且整体是10000111;剩下的7位是原始码,绝对值为-7。0000111按位反转为1111000;加1,所以-7的补码是11111001。