为什么计算机要用2的补码(2's complement)

2's complement

缘起:

读mma8452q的datasheet的时候找到这样一句话:三个轴的数据,存储为12位2的补码。之前学计算机的时候第一节课就是关于原码、反码、补码的介绍,当时只知道个大概怎么转换,做这种题的时候也特别烦。至于为什么计算机中为什么要用补码却不太了解。

OUT_Z_MSB,and OUT_Z_LSB registers as 2’s complement 12-bit numbers.

image.png

计算机为什么用补码表示负数

表示负数一般我们会这样想:把它的某个位作为符号位,这样就可以将它与正数区别开了。 比如:数字5用0000 0101来表示,那-5就用1000 0101来表示。 这种方式对于人是非常好理解的,但是对于计算机就不是很友好了。

使用这种方式表示的负数当与正数相加时会出现错误,当使用这种方式做正数与负数的相加时还要进行转换。
使用补码可以很好的解决这个问题

大佬有篇文章写的很好,详细介绍了这个问题 关于2的补码