原码:计算机只能识别0和1,使用的是二进制。数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负),这就是机器数的原码了。
下面的例子都假设字长为8个bits。
假如采用原码来计算:
(1) + (1) //原码计算
=(0000 0001) + (0000 0001)
=(0000 0010)
=(2) //结果正确
(1) - (1) //原码计算
=(1) + (-1)
=(0000 0001) + (1000 0001)
=(1000 0010)
=(-2) //结果错误
(1) - (2)//原码计算
=(1) + (-2)
=(0000 0001) + (1000 0010)
=(1000 0011)
=(-3) //结果错误
因为在两个正数的加法运算中是