数分为正数和负数,计算机中的数是用二进制来表示的,数的符号也用二进制来表示,所谓带符号数就是最高位是符号位,一般规定正数的符号位为0,负数的符号位为1.
把一个数连同其符号在内数值化表示叫机器数,机器数的表示可以用不同的码制,常用的有原码、补码、反码。
例如: [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补
[+0] = [00000000]原 = [00000000]反 = [00000000]补 [-0] = [10000000]原 = [11111111]反 = [00000000]补
[+127] = [01111111]原 = [01111111]反 = [01111111]补 [-127] = [11111111]原 = [10000000]反 = [10000001]补
[X+Y]补 = [X]补+[Y]补
例:X = +0110011,Y=-0101001,求[X+Y]补
[X]补 = 00110011 [Y]补 = 11010111
[X+Y] = [X]补 + [Y]补 = 00110011 + 11010111 = 00001010
注:因为计算机中运算器的位长是固定的(定长运算),上述运算中产生的最高位进位将丢掉,所以结果不是100001010而是00001010.
[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补
例:1 -1 [十进制]
1 的补码 :00000001
-1的补码:11111111
1 + (-1) = 00000001 + 11111111 =00000000 = 0
例:-7 - (-10)[十进制]
改为加法形式: -7 -(-10) = -7 + (-(-10))
-7的补码:11111001
-(-10)的补码:-10的原码为10001010,-(-10)的原码为00001010
-(-10) 的补码就是其原码:00001010
-7-(-10)=11111001 + 00001010 = 00000011 = 3
资料:
http://www.doc88.com/p-3743481807692.html?tdsourcetag=s_pcqq_aiomsg
http://www.renrendoc.com/p-19508643.html
https://blog.csdn.net/leoe_/article/details/79096568
百度百科-补码
原文:https://www.cnblogs.com/adongyo/p/11490338.html