差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| 计算机组成与体系结构:数据的表示和运算 [2026/03/03 23:35] – [2.1.1 进位计数制] 张叶安 | 计算机组成与体系结构:数据的表示和运算 [2026/03/03 23:54] (当前版本) – [2.1.3 原码、反码、补码、移码] 张叶安 | ||
|---|---|---|---|
| 行 25: | 行 25: | ||
| [[计算机组成与体系结构: | [[计算机组成与体系结构: | ||
| - | < | + | |
| ==== 2.1.2 真值与机器数 ==== | ==== 2.1.2 真值与机器数 ==== | ||
| **真值**:用正负号表示的数,如+1011、-1101 | **真值**:用正负号表示的数,如+1011、-1101 | ||
| - | **机器数**:在计算机中表示的数,将符号数字化,0表示正,1表示负 | + | **机器数**:包含符号位和数值位两部分。符号位通常放在最高位(最左边),0表示正数,1表示负数。 |
| - | 一个数在计算机中的表示形式称为机器数,机器数包含符号位和数值位两部分。 | + | 一般含符号位一共8位表示一个字符,扩展知识点:[[计算机组成与体系结构: |
| - | 符号位通常放在最高位(最左边),0表示正数,1表示负数。 | + | ==== 2.1.3 原码、反码、补码、移码 ==== |
| + | |码制|运算规则|正数例子(+5)|负数例子(-5)|+0|-0|0-0| | ||
| + | |原码|符号位0正1负,数值部分不变;符号位参与运算|00000101|10000101|00000000|10000000|10000000| | ||
| + | |反码|正数同原码;负数符号位不变,其余位按位取反|00000101|11111010|00000000|11111111|11111111| | ||
| + | |补码|正数同原码;负数 = 反码 + 1;符号位参与运算|00000101|11111011|00000000|00000000|00000000| | ||
| + | |移码|补码符号位取反(常用于表示浮点阶码)|10000101|01111011|10000000|10000000|10000000| | ||
| - | ====== 原码・反码・补码・移码====== | ||
| - | |||
| - | ===== 一、原码 ===== | ||
| - | |||
| - | 最高位为符号位(0 正,1 负) | ||
| - | |||
| - | 其余位为绝对值 | ||
| - | |||
| - | 有两个 0(+0、-0) | ||
| - | |||
| - | ===== 二、反码 ===== | ||
| - | |||
| - | |||
| - | 正数:与原码相同 | ||
| - | |||
| - | 负数:符号位不变,数值位按位取反 | ||
| - | |||
| - | 仍有两个 0 | ||
| - | |||
| - | 👉 本质:负数 = 原码数值位取反 | ||
| - | |||
| - | ===== 三、补码(重点)===== | ||
| - | |||
| - | 规则: | ||
| - | |||
| - | 正数:与原码相同 | ||
| - | |||
| - | 负数:按位取反 + 1 | ||
| - | |||
| - | 核心作用: | ||
| - | |||
| - | < | ||
| - | |||
| - | A - B = A + (-B)补 | ||
| - | |||
| - | </ | ||
| - | |||
| - | 👉 用加法代替减法 | ||
| - | |||
| - | 特点: | ||
| - | |||
| - | 0 唯一 ✅ | ||
| - | |||
| - | 最高位进位自动丢弃 | ||
| - | |||
| - | n 位整数范围:$-2^n ~ 2^n - 1$ | ||
| - | |||
| - | ✅ 计算机实际采用 | ||
| - | |||
| - | 👉 本质:让减法变加法 | ||
| - | |||
| - | ===== 四、移码 ===== | ||
| - | |||
| - | 规则: | ||
| - | |||
| - | $[X]移 = 2^n + X$ | ||
| - | |||
| - | 作用: | ||
| - | |||
| - | 常用于浮点数阶码 | ||
| - | |||
| - | 便于比较大小(无符号比较即可) | ||
| - | |||
| - | 👉 本质:整体平移一个常数 | ||
| - | |||
| - | ===== 五、核心对比总结 ===== | ||
| - | |||
| - | ^ 码制 ^ 是否双零 ^ 运算是否方便 ^ 用途 ^ | ||
| - | | 原码 | 是 | 否 | 早期表示 | | ||
| - | | 反码 | 是 | 否 | 过渡方案 | | ||
| - | | 补码 | 否 | ✅ 是 | 计算机整数 | | ||
| - | | 移码 | 否 | ✅ 是 | 浮点阶码 | | ||
| - | |||
| - | ===== 一句话记忆 ===== | ||
| - | |||
| - | |||
| - | |||
| - | 原:符号+绝对值 | ||
| - | |||
| - | 反:负数取反 | ||
| - | |||
| - | 补:负数取反+1(真正计算用) | ||
| - | |||
| - | 移:整体加偏移, | ||
| - | |||
| - | |||
| - | |||
| - | **不同码制的比较(以8位为例):** | ||
| - | | 真值 | 原码 | 反码 | 补码 | 移码 | | ||
| - | | +127 | 01111111 | 01111111 | 01111111 | 11111111 | | ||
| - | | +0 | 00000000 | 00000000 | 00000000 | 10000000 | | ||
| - | | -0 | 10000000 | 11111111 | 00000000 | 10000000 | | ||
| - | | -1 | 10000001 | 11111110 | 11111111 | 01111111 | | ||
| - | | -127 | 11111111 | 10000000 | 10000001 | 00000001 | | ||
| - | | -128 | 无 | 无 | 10000000 | 00000000 | | ||
| + | < | ||
| ===== 2.2 定点数的运算 ===== | ===== 2.2 定点数的运算 ===== | ||