进制 & 转换
简介
进制用基数和各位权值表示数值。计算机常见二、八、十、十六进制;转换进制改变写法,不改变数值。
分类
| 进制 | 基数 | 数字 | 常见用途 |
|---|---|---|---|
| 二进制 | 2 | 0、1 | 位状态和机器数据 |
| 八进制 | 8 | 0–7 | Unix 文件权限 |
| 十进制 | 10 | 0–9 | 日常计数 |
| 十六进制 | 16 | 0–9、A–F | 内存、颜色和字节数据 |
计算机中主要用途
八进制一位对应三位二进制,十六进制一位对应四位二进制,因此便于压缩展示位模式。C 中八进制整数字面量通常以 0 开头,十六进制以 0x 开头;其他语言的字面量语法需分别确认。
之间转换
以十进制26转二进制为例,下图记录每次除2的余数。余数先得到低位,因此需倒序读取为11010;正向拼接01011会得到错误的值。
查看图表代码
- 二进制转八进制或十六进制:从右往左按三位或四位分组,最左不足位补零,再把每组转换为一个目标数字。例如二进制 110100111:按 110 100 111 得八进制 647,按 0001 1010 0111 得十六进制 1A7。
- 八进制或十六进制转二进制:每位分别展开成三位或四位,再连接。八进制与十六进制互转时,先转二进制再重新分组;不能直接把每个八进制数字当成四位二进制。
- 十进制转其他整数进制:连续除以目标基数,记录余数,直到商为零;余数倒序排列。零本身写作 0。
- 其他进制转十进制:从右起,第 i 位乘以基数的 i 次幂后求和。例如十六进制 AB = 10 × 16 + 11 = 171。
练习
下表保留原练习,修正分组与结果中的算术错误。数字的进制由列名指定,十六进制统一使用大写字母。
先独立转换二进制10101010、八进制755、十进制128、十六进制1A,以及下表其余四题;再展开答案核对。
转换结果与参考步骤
| 原题 | 二进制 | 八进制 | 十进制 | 十六进制 |
|---|---|---|---|---|
| 二进制 10101010 | 10101010 | 252 | 170 | AA |
| 八进制 755 | 111101101 | 755 | 493 | 1ED |
| 十进制 128 | 10000000 | 200 | 128 | 80 |
| 十六进制 1A | 11010 | 32 | 26 | 1A |
| 二进制 1101010111011111 | 1101010111011111 | 152737 | 54751 | D5DF |
| 八进制 654 | 110101100 | 654 | 428 | 1AC |
| 十进制 1024 | 10000000000 | 2000 | 1024 | 400 |
| 十六进制 FE | 11111110 | 376 | 254 | FE |
例:八进制 755 展开为 111 101 101,重新按四位分组为 0001 1110 1101,即十六进制 1ED。
以上算法和表格针对非负整数;带符号编码与小数转换另需规则。本轮仅逐项静态复算,没有执行转换程序。
继续阅读
- 表示与执行状态
- 表达式栈机
- 模型代价与规范