无符号编码基于传统的二进制表示法,表示大于或等于零的数字;补码编码是表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字;浮点数编码是表示实数的科学记数法的以二为基数的版本。
整数的表示虽然智能编码一个相对较小的数值范围,但是这种表示是精确的;浮点数虽然可以编码一个较大的数值范围,但是这种表示只能是近似的。
2.1 信息存储
机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能的地址集合称为虚拟地址空间。
每台计算机都有一个字长,用来指明整数和指针数据的标称大小。
有时候字节顺序会成为问题:1.在不同类型机器之间传输二进制数据时;2. 当阅读表示整数数据的字节序列时字节顺序也很重要。
2.2 整数表示
当执行一个运算时,如果它的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式地将有符号参数强制类型转换为无符号数,并假设这两个数都是非负的,来执行这个运算。
将一个无符号数转换为一个更大的数据类型,我们只需要简单地在表示的开头添加0,这种运算叫做零扩展。将一个补码数字转换为一个更大的数据类型可以执行符号扩展,规则是在表示中添加最高有效位的副本。
浮点数