1.计算机存储信息采用的二进制格式,大多数计算机将8位bit或者称为字节(byte)做为最小存储单位,机器级程序将内存看作是一个非常大的字节数组,称为虚拟内存,每个字节都有一个唯一标识,称为地址,所有可能的地址集合就被称为虚拟地址空间。
2.每台计算机都有一个字长,32位以及64位,字长决定了计算机访问内存地址空间大小,即最多访问2^w个字节。对于跨越多字节的程序对象,对象地址为所有用字节中最小的地址,比如一个int类型的对象起始地址是0x100,那么0x101、0x102、0x103这几个连续的地址也都用作于表示int。
3.在不同的机器,字节存储的顺序也不同,有两个通用的规则大端法和小端法。例如一个int类型对象用16进制表示为0x01234567,大端法存储是按照从最高有效字到最低有效字节排序的,67 45 23 01 。而小端法则是按照我们所看到的那样,从最低有效字节到最高有效字节排序, 01 23 45 67 。目前大部分机器采用小端法。
4.计算机中表示整数的编码形式一个有两种。一种是无符号编号,另一种是补码编码,假设一个整数有w位编码,那么无符号编码所能代表的范围在~,其中,,其二进制转换公式为 ,而由于补码的最高有效位被解释为负权(也就是符号),所以它所能表示的范围在~ 之间,其中,,二进制转换公式为:。关于无符号转换成有符号,对于小于的值保持不变,但对于大于的值则要减去转换成对于的复数。
5.IEEE浮点数标准用来表示。
- 符号。用于表示当前浮点数正负数。
- 尾数。由一个二进制数表示,类似于我们科学计数法一样,是一个开头或者的二进制数。
- 阶码。E的作用是对浮点数加权,这个权重是2的E次幂。同时阶码又分为一下三种类型
- 规格化的值,指的是当 exp 的值不全为0也不全为1的时候。
- 非规格化的值,指的是 exp 的值全为1。零可以用这个表示,只不过它有正负号
- 特殊值,指的是 exp 的值全为0。可以表示一些特殊值,如NaN,正无穷,负无穷 单精度用1位表示符号,8位标识阶码,23位标识尾数。 例如一个浮点数128.5,在单精度里面,其M表示为 10000000100000000000000 ,exp=00000111,符号s=0,连起来就是 0 00000111 10000000100000000000000。