从零开始学C语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.3 计算机中数据的存储

我们已经知道在计算机内所有数据最终都是使用二进制数表示的,上一节中我们已经学习了如何将一个十进制、八进制、十六进制数转换为二进制数,数值有正负之分,它们在计算机内是如何存储的呢?

在计算机中,数据有三种表示方法:原码、反码和补码。计算机用一个二进制的最高位存放所表示数值的符号,最高位为0表示正数,最高位为1表示负数。对于一个正数,原码是将该数转换成二进制,它的反码和补码与原码相同。对于一个负数,原码是将该数按照绝对值大小转换成的二进制数,最高位即符号位为1;它的反码是除符号位外将二进制数按位取反,所得的新二进制数称为原二进制数的反码;它的补码是将其二进制的反码加1。计算机中任何一个带有符号的二进制数都是以补码形式进行运算和存储的。

如表1-1所示为比较1与-1的原码、反码和补码。

表1-1 数据存储表(1与-1的原码、反码和补码)

注:为了方便比较我们在这里用一个字节的整数举例。