3.2 存储数字
数字在内存中的存储主要的问题:
如何存储数字的符号
如何显示小数
3.2.1 存储整数
整数是完整的数字,没有小数部分。整数通常采用定点表示法存储,小数点固定在最右边。
3.2.2 无符号表示法
无符号整数只包括零和正数,范围是0到无穷大。
计算机不能表示所有整数,通常定义一个最大无符号整数,值为。n为此计算机中用于表示无符号整数的二进制位数。n位二进制数所能表示的数值范围是0 ~ 。
超出存储单元位数的限制,称为溢出。
无符号表示法-存储,译解
存储:
首先将整数变成二进制数。
如果二进制位数不足n位,则在二进制数的左边补0,使它的总位数为n位;如果位数大于n,该整数无法存储。
例:将7存储在8位存储单元中,使用无符号表示法
7变为二进制:111
左边补0:00000111
译解:
- 二进制位模式转换为十进制的无符号整数
无符号表示法-溢出
试图存储超过的数字,就会出现溢出。
无符号表示法-应用
无符号整数表示法可以提高存储的效率。一些不用到负数的情况都可以用无符号整数表示法。
计数
寻址
其它不用负数的情况
3.2.3 符号加绝对值表示法
符号加绝对值表示法并不常用,在计算机中用于存储部分实数。
全部数据范围分为两个相等的子范围,前半个表示正整数,后半个表示负整数。最左位用于定义整数的符号。0表示正整数,1表示负整数。剩余位表示数字的绝对值。
0有+0和-0两种表示方法。
3.2.4 二进制补码表示法
几乎所有的计算机都是用二进制补码表示法来存储位于n位存储单元中的有符号整数。最左位表示符号,0代表非负数,1代表负数。
二进制补码表示法仅有一个0。
n位位模式分为两个相等的子范围
第一个子范围表示非负整数,0 ~ - 1
第二个子范围表示负整数,- ~ -1
如果n=4:

二进制补码表示法 – 反码和补码运算
反码运算:反转各个位。
原模式: 0011 0110
求反码: 1100 1001
补码运算:反码+1。
原模式: 0011 0110
求反码: 1100 1001
求补码: 1100 1010
对一个数,求两次反码可以得到原数。
对一个数,求两次补码可以得到原数。
二进制补码表示法 – 存储
存储步骤:
将整数变成n位的二进制数。
如果整数是正数或零,则原样存储;如果是负数,则求补码存储。
还原步骤:
如果最左位为1,取补码;如果最左位为0,则无操作。
将该整数转换为十进制。
二进制补码表示法 – 溢出
3.2.5 三种表示法比较
