差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| 计算机组成与体系结构:数据的表示和运算 [2026/03/03 23:12] – [2.1.1 进位计数制] 张叶安 | 计算机组成与体系结构:数据的表示和运算 [2026/03/03 23:54] (当前版本) – [2.1.3 原码、反码、补码、移码] 张叶安 | ||
|---|---|---|---|
| 行 4: | 行 4: | ||
| ==== 2.1.1 进位计数制 ==== | ==== 2.1.1 进位计数制 ==== | ||
| + | |||
| + | 考点1: | ||
| + | |进制|数码|基数|位权| | ||
| + | |二进制|0, | ||
| + | |八进制|0, | ||
| + | |十进制|0, | ||
| + | |十六进制|0, | ||
| + | 考点2:进制的转换 | ||
| |转换|技巧|例题| | |转换|技巧|例题| | ||
| - | |其他进制 → 十进制|按权展开|$(1011.01)_2$、$(735)_8$、$(2A3)_{16}$转十进制| | + | |其他进制 → 十进制|按权展开|$(1011.01)_2$、$(735)_8$、$(2A3)_{16}$ 转十进制| |
| - | |十进制 → 其他进制|整数部分除权取余再取倒序,小数部分乘权取整取正序|$(13.6875)_{10}$转二进制、$(156)_{10}$转八进制| | + | |十进制 → 其他进制|整数部分除基取余倒序,小数部分乘基取整正序|$(13.6875)_{10}$ 转二进制、$(156)_{10}$ 转八进制、$(254)_{10}$ 转十六进制| |
| + | |二进制 → 八进制|整数部分从右向左每三位一组,小数部分从左向右每三位一组|$(1011010.1101)_2$ 转八进制| | ||
| + | |八进制 → 二进制|每位数字展开成三位二进制|$(275)_8$ 转二进制| | ||
| + | |二进制 → 十六进制|整数部分从右向左每四位一组,小数部分从左向右每四位一组|$(11010110)_2$ 转十六进制| | ||
| + | |十六进制 → 二进制|每位数字展开成四位二进制|$(3F)_{16}$ 转二进制| | ||
| + | |八进制 ↔ 十六进制|先转二进制,再转目标进制|$(17)_8$ 转十六进制| | ||
| - | === 一、其他进制 → 十进制(按权展开)=== | + | [[计算机组成与体系结构: |
| - | <wrap em> | ||
| - | $(1011.01)_2$ | ||
| - | |||
| - | $= 1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 + 0×2^{-1} + 1×2^{-2}$ | ||
| - | |||
| - | $= 8 + 0 + 2 + 1 + 0 + 0.25$ | ||
| - | |||
| - | $= 11.25$ | ||
| - | |||
| - | $(1011.01)_2 = (11.25)_{10}$ | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(735)_8$ | ||
| - | |||
| - | $= 7×8^2 + 3×8^1 + 5×8^0$ | ||
| - | |||
| - | $= 7×64 + 3×8 + 5$ | ||
| - | |||
| - | $= 448 + 24 + 5$ | ||
| - | |||
| - | $= 477$ | ||
| - | |||
| - | $(735)_8 = (477)_{10}$ | ||
| - | |||
| - | |||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(2A3)_{16}$ | ||
| - | |||
| - | $A = 10$ | ||
| - | |||
| - | $= 2×16^2 + 10×16^1 + 3×16^0$ | ||
| - | |||
| - | $= 2×256 + 10×16 + 3$ | ||
| - | |||
| - | $= 512 + 160 + 3$ | ||
| - | |||
| - | $= 675$ | ||
| - | |||
| - | $(2A3)_{16} = (675)_{10}$ | ||
| - | |||
| - | |||
| - | |||
| - | === 二、十进制 → 其他进制 === | ||
| - | |||
| - | == (1)十进制 → 二进制 == | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(13.6875)_{10}$ | ||
| - | |||
| - | 整数部分除2取余: | ||
| - | |||
| - | < | ||
| - | 13 ÷ 2 = 6 余 1 | ||
| - | 6 ÷ 2 = 3 余 0 | ||
| - | 3 ÷ 2 = 1 余 1 | ||
| - | 1 ÷ 2 = 0 余 1 | ||
| - | </ | ||
| - | |||
| - | 倒序得: | ||
| - | |||
| - | $13_{10} = (1101)_2$ | ||
| - | |||
| - | 小数部分乘2取整: | ||
| - | |||
| - | < | ||
| - | 0.6875 × 2 = 1.375 取 1 | ||
| - | 0.375 × 2 = 0.75 取 0 | ||
| - | 0.75 × 2 = 1.5 取 1 | ||
| - | 0.5 × 2 = 1.0 取 1 | ||
| - | </ | ||
| - | |||
| - | 正序得: | ||
| - | |||
| - | $0.6875_{10} = (.1011)_2$ | ||
| - | |||
| - | 最终结果: | ||
| - | |||
| - | $(13.6875)_{10} = (1101.1011)_2$ | ||
| - | |||
| - | |||
| - | |||
| - | == (2)十进制 → 八进制 == | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(156)_{10}$ | ||
| - | |||
| - | < | ||
| - | 156 ÷ 8 = 19 余 4 | ||
| - | 19 ÷ 8 = 2 余 3 | ||
| - | 2 ÷ 8 = 0 余 2 | ||
| - | </ | ||
| - | |||
| - | $(156)_{10} = (234)_8$ | ||
| - | |||
| - | == (3)十进制 → 十六进制 == | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(254)_{10}$ | ||
| - | |||
| - | < | ||
| - | 254 ÷ 16 = 15 余 14(E) | ||
| - | 15 ÷ 16 = 0 余 15(F) | ||
| - | </ | ||
| - | |||
| - | $(254)_{10} = (FE)_{16}$ | ||
| - | |||
| - | === 三、二进制 ↔ 八进制 === | ||
| - | |||
| - | == (1)二进制 → 八进制 == | ||
| - | |||
| - | 规则:整数部分从右向左每三位一组,小数部分从左向右每三位一组。 | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(1011010.1101)_2$ | ||
| - | |||
| - | 整数部分分组: | ||
| - | |||
| - | 001 011 010 | ||
| - | |||
| - | 对应八进制: | ||
| - | |||
| - | 1 3 2 | ||
| - | |||
| - | 小数部分分组: | ||
| - | |||
| - | 110 100 | ||
| - | |||
| - | 对应: | ||
| - | |||
| - | 6 4 | ||
| - | |||
| - | $(1011010.1101)_2 = (132.64)_8$ | ||
| - | |||
| - | |||
| - | |||
| - | == (2)八进制 → 二进制 == | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(275)_8$ | ||
| - | |||
| - | < | ||
| - | 2 → 010 | ||
| - | 7 → 111 | ||
| - | 5 → 101 | ||
| - | </ | ||
| - | |||
| - | $(275)_8 = (10111101)_2$ | ||
| - | |||
| - | |||
| - | === 四、二进制 ↔ 十六进制 === | ||
| - | |||
| - | == (1)二进制 → 十六进制 == | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(11010110)_2$ | ||
| - | |||
| - | 分组: | ||
| - | |||
| - | 1101 0110 | ||
| - | |||
| - | < | ||
| - | 1101 → D | ||
| - | 0110 → 6 | ||
| - | </ | ||
| - | |||
| - | $(11010110)_2 = (D6)_{16}$ | ||
| - | |||
| - | === (2)十六进制 → 二进制 === | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | $(3F)_{16}$ | ||
| - | |||
| - | < | ||
| - | 3 → 0011 | ||
| - | F → 1111 | ||
| - | </ | ||
| - | |||
| - | $(3F)_{16} = (111111)_2$ | ||
| - | |||
| - | === 五、八进制 ↔ 十六进制 === | ||
| - | |||
| - | 规则:先转二进制,再转目标进制。 | ||
| - | |||
| - | <wrap em> | ||
| - | |||
| - | 将 $(17)_8$ 转换为十六进制。 | ||
| - | |||
| - | 第一步:转二进制 | ||
| - | |||
| - | < | ||
| - | 1 → 001 | ||
| - | 7 → 111 | ||
| - | </ | ||
| - | |||
| - | $(17)_8 = (001111)_2$ | ||
| - | |||
| - | 第二步:按四位分组 | ||
| - | |||
| - | 0000 1111 | ||
| - | |||
| - | = 0F | ||
| - | |||
| - | $(17)_8 = (F)_{16}$ | ||
| ==== 2.1.2 真值与机器数 ==== | ==== 2.1.2 真值与机器数 ==== | ||
| **真值**:用正负号表示的数,如+1011、-1101 | **真值**:用正负号表示的数,如+1011、-1101 | ||
| - | **机器数**:在计算机中表示的数,将符号数字化,0表示正,1表示负 | + | **机器数**:包含符号位和数值位两部分。符号位通常放在最高位(最左边),0表示正数,1表示负数。 |
| - | + | ||
| - | 一个数在计算机中的表示形式称为机器数,机器数包含符号位和数值位两部分。 | + | |
| - | + | ||
| - | 符号位通常放在最高位(最左边),0表示正数,1表示负数。 | + | |
| - | + | ||
| - | + | ||
| - | ====== 原码・反码・补码・移码====== | + | |
| - | + | ||
| - | ===== 一、原码 ===== | + | |
| - | + | ||
| - | 最高位为符号位(0 正,1 负) | + | |
| - | + | ||
| - | 其余位为绝对值 | + | |
| - | + | ||
| - | 有两个 0(+0、-0) | + | |
| - | + | ||
| - | ===== 二、反码 ===== | + | |
| - | + | ||
| - | + | ||
| - | 正数:与原码相同 | + | |
| - | + | ||
| - | 负数:符号位不变,数值位按位取反 | + | |
| - | + | ||
| - | 仍有两个 0 | + | |
| - | + | ||
| - | 👉 本质:负数 = 原码数值位取反 | + | |
| - | + | ||
| - | ===== 三、补码(重点)===== | + | |
| - | + | ||
| - | 规则: | + | |
| - | + | ||
| - | 正数:与原码相同 | + | |
| - | + | ||
| - | 负数:按位取反 + 1 | + | |
| - | + | ||
| - | 核心作用: | + | |
| - | + | ||
| - | < | + | |
| - | + | ||
| - | A - B = A + (-B)补 | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | 👉 用加法代替减法 | + | |
| - | + | ||
| - | 特点: | + | |
| - | + | ||
| - | 0 唯一 ✅ | + | |
| - | + | ||
| - | 最高位进位自动丢弃 | + | |
| - | + | ||
| - | n 位整数范围:$-2^n ~ 2^n - 1$ | + | |
| - | + | ||
| - | ✅ 计算机实际采用 | + | |
| - | + | ||
| - | 👉 本质:让减法变加法 | + | |
| - | + | ||
| - | ===== 四、移码 ===== | + | |
| - | + | ||
| - | 规则: | + | |
| - | + | ||
| - | $[X]移 = 2^n + X$ | + | |
| - | + | ||
| - | 作用: | + | |
| - | + | ||
| - | 常用于浮点数阶码 | + | |
| - | + | ||
| - | 便于比较大小(无符号比较即可) | + | |
| - | + | ||
| - | 👉 本质:整体平移一个常数 | + | |
| - | + | ||
| - | ===== 五、核心对比总结 ===== | + | |
| - | + | ||
| - | ^ 码制 ^ 是否双零 ^ 运算是否方便 ^ 用途 ^ | + | |
| - | | 原码 | 是 | 否 | 早期表示 | | + | |
| - | | 反码 | 是 | 否 | 过渡方案 | | + | |
| - | | 补码 | 否 | ✅ 是 | 计算机整数 | | + | |
| - | | 移码 | 否 | ✅ 是 | 浮点阶码 | | + | |
| - | + | ||
| - | ===== 一句话记忆 ===== | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 原:符号+绝对值 | + | |
| - | + | ||
| - | 反:负数取反 | + | |
| - | + | ||
| - | 补:负数取反+1(真正计算用) | + | |
| - | 移:整体加偏移, | + | 一般含符号位一共8位表示一个字符,扩展知识点:[[计算机组成与体系结构: |
| + | ==== 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| | ||
| - | **不同码制的比较(以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 定点数的运算 ===== | ||