3.1 运算
按位运算:按位与、按位或、按位取反、按位异或
逻辑运算:逻辑与、逻辑或、逻辑非
移位运算:算数左移、逻辑左移、算术右移、逻辑右移
- 算数左移、逻辑左移:高位移出,低位补零
- 对于无符号数,若高位移出的是 $1$,则发生溢出
- 对于有符号数,若左移之后符号位发生了改变($CF \oplus SF = 1$),则发生溢出
- 算术右移:对于有符号数,低位移出,高位补数符(正为 $0$,负为 $1$)
- 逻辑右移:对于无符号数,低位移出,高位补零
位扩展和位截断运算:
- 位扩展:无符号数则前面补零,有符号数则前面补数符
- 位截断:前面直接截断
小段机和大端机在机器数的运算过程中没有区别,只会影响数据在内存中的存储方式。
2.4 计算机中的数据表示
2.4.1 计算机中的数据表示
真值:真实的值
机器数:用 0/1 编码的在机器内储存的数
数据宽度:位、字节、字
2.4.2 数值数据的定点表示
正负:在所有数前面设置符号位、其余用原码 / 补码(更常用)
小数点:
- 定点整数:小数点固定在最低位的右边,表示范围 $[0, 2^n - 1]$
- 定点小数:小数点固定在最高位的左边,表示范围 $[0, 1 - 2^{-n}]$
零:原码和反码由于符号位的原因,分为正零和负零;补码的正零和负零的表示是一样的。
2.4.3 数值数据的浮点表示
IEEE754 单精度浮点数标准(阶码是移码、尾数是去掉最高位的1,会出编码与解码)
实数 / 浮点数:(IEEE 754 标准)符号位+阶码+尾数
浮点数的规格化:调整阶码的大小,使得尾数 $f$ 满足 $1 \le |f| < 2$
- 调整方式为右规(小数点往左移,阶码加一),左规(小数点往右移,阶码减一)
使用移码表示,真值加上偏置值(通常为 $2^{n - 1} - 1$)得到机器数
规格化数:
| 单精度浮点数 | 双精度浮点数 | |
|---|---|---|
| 符号位 $s$ | 负数为 $1$,正数为 $0$ | 负数为 $1$,正数为 $0$ |
| 阶码 $e$ | $8$ 位,偏置常数为 $2^7 - 1 = 127$,表示范围为 $[0000 0001 (-126), 11111110 (127)]$ | $11$ 位,偏置常数为 $2^{10} - 1 = 1023$,表示范围为 $[-1022, 1023]$ |
| 尾数 $f$ | 尾数有 $23$ 位,精度为 $24$ 位 全 0 / 全 1 编码用来表示特殊的值 有效数字为 $1.\overline{f}$,最高位的 $1$ 隐含表示 | 尾数有 $52$ 位,精度为 $53$ 位 全 0 / 全 1 编码用来表示特殊的值 有效数字为 $1.\overline{f}$,最高位的 $1$ 隐含表示 |
| 真值 | $(-1)^s \times 1.\overline{f} \times 2^{e - 127}$ | $(-1)^s \times 1.\overline{f} \times 2^{e - 1023}$ |
特殊值表示:
| 阶码 | 阶码 | 尾数 | 数据类型 |
|---|---|---|---|
| $0/1$ | $[1, 254]$ | 任何值 | 规格化数 |
| $0/1$ | $0$ | 非零数 | 非规格化数 |
| $0/1$ | $0$ | $0$ | $+0 / -0$ |
| $0/1$ | 全 $1$ | $0$ | $+\infty / -\infty$ |
| $0/1$ | 全 $1$ | 非零数 | $NaN$ |
非规格化数:用来表示比规格化数更小的数,真值为 $(-1)^s \times 0.\overline{f} \times 2^{-127}$

正数与浮点数的转换:
- 整数 → 浮点 → 整数:可能丢失精度(尤其是
float)。 - 浮点 → 整数 → 浮点:一定会丢失小数部分。
double因为精度更高,对 32 位int可以保证无损,但对于float或更大整数仍可能出问题。
2.4.4 数值数据的十进制表示
ASCII码:将数视作字符串,分成前分隔数字串、后嵌入数字串
BCD码:将每个位用 4 位二进制数表示,十进制有权码(8421码)
十进制无权码(余3码 / 格雷码):余3码好处是做十进制运算的时候便于进位,格雷码好处是相邻两数只有一位发生变化
2.4.5 字符数据的机器表示
西文字符:ASCII码
中文字符:
- 输入码:对每个汉字用相应按键进行编码表示,用于输入
- 内码:用于在系统中进行存储、查找、传送等
- 字模点阵码或轮廓描述: 描述汉字的字模点阵或轮廓,用于显示或打印
图像:
- 像素(pixel):构成图像的最小单位,即屏幕上的小圆点
- 颜色(color):任何颜色都可由红、绿和蓝三色调配而成
- 像素的颜色:用3个字节的二进制数表示
2.4.6 数据的度量与存储
大小端存储、不同类型结构体内的数据对齐方式
数据存放的方式:
- 大端存储:地址先存放高位的数据,再存放低位的数据
- 小端存储:地址先存放低位的数据,再存放高位的数据(绝大多数现代计算机)