为什么计算机使用补码进行计算
今天看到一句话(Subtraction can be easily reduced to addition by using complement code.粗略翻译:使用补码可以很容易的将减法化为加法)没想明白,后悔当初没好好学数字逻辑。
补充知识:
- 原码: 对计算机中数字的二进制定点表示。最高为为符号位,符号位为0表示正数,为1表示负数,其余位置表示数值大小。原码不能直接参加运算,比如(-1)+1=0,如果用二进制计算:00000001+10000001=10000010,换算为十进制为130,出现运算错误。
- 反码: 一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位对原码取反。
- 补码: 一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,再整体加1。
补码用来进行计算的优势:
- 数据的符号与数据一起参加运算。
- 求差时将负减数求补,用求和代替求差,将减法运算转换为补码的加法运算。
- 运算结果为补码。如果符号位为 0 ,表明运算结果为正;如果符号位为 1 ,则表明结果为负。
总结来说,补码可以方便的实现减法运算或者结果出现二进制负数的情况。