十六进制
十六进制 | |
---|---|
术语名称 | 十六进制 |
英语名称 | hexadecimal numeral system |
别名 | base-16 numeral system, hexadecimal |
十六进制的 | |
---|---|
术语名称 | 十六进制的 |
英语名称 | hexadecimal |
别名 | base-16, hex |
十六进制数 | |
---|---|
术语名称 | 十六进制数 |
英语名称 | hexadecimal number |
十六进制(hexadecimal, base-16, 缩写为 hex)记数系统指基数为 16 的进位制记数法。是指通过 0~9 及 A~F 十六个符号表达数值的满十六进一的记数方法。
由于十六进制可以作为二进制的缩写,计算机科学常常会使用十六进制表达二进制数据。
本文仅指数学上的进制,作为编码的 base16 见 RFC 4648 。
定义
基数为 16 的进位制记数法称为十六进制记数法(hexadecimal numeral system, base-16 numeral system, 简称 hexadecimal, base-16)。
十六进制记数法下的数称为十六进制数(hexadecimal numeral)。
类似地,“十六进制系统相关的”往往使用十六进制的(hexadecimal, 常缩写为 hex, 或 base-16)作为前缀。
表示
十六进制中的每一位只含有十六个符号,按通常习惯,会使用阿拉伯数字 0~9 及拉丁字母 A~F 。尽管存在其他选择,较为广泛接受的仍然是前 6 个拉丁字母。在写成数形式时,遵从进位制记数法的一般规则,由权重更高的位到权重更低的位写成一串,且存在小数部分时在位权为 [math]\displaystyle{ 16^0=1 }[/math] 的位后添加小数点。如 [math]\displaystyle{ 27C }[/math] 。
若需要指出具体进制时,可使用一般的添加进制下标的形式,即 [math]\displaystyle{ 27C_{16} }[/math] 或 [math]\displaystyle{ (27C)_{16} }[/math] 。也有人使用缩写下标或后缀,即 [math]\displaystyle{ 27C_\mathrm{hex} }[/math] 或 [math]\displaystyle{ 27C\mathrm{h} }[/math] 。
在编程语言,特别是受到 C 语言影响的编程语言中,十六进制数通常加前缀 0x
或 0X
,即 0x27C
或 0X27C
。
分隔符
有时对十六进制数使用类似千位分隔符的方式分段以便阅读。在通常情况下,由于二进制数据以字节形式 8 位一组地出现,会按照每 4 位二进制数一段进行分隔,也就是 1 个十六进制位。通常写数字时不会出现较大的十六进制数字,但在表示二进制数据时会出现,此时按字节分段,即每两个十六进制位处进行分隔。
数值及表示
位权
对十六进制数,其小数点前的数位的位权为 1 ,向高位依次为 [math]\displaystyle{ 16,16^2,16^3,\cdots }[/math] 。
如果存在小数部分,则向低位也依次为 [math]\displaystyle{ 16^{-1},16^{-2},16^{-3},\cdots }[/math] 。
十六进制转换为十进制
计算一个十六进制数的十进制表示时,可以通过计算对应位权相加的方式,即 [math]\displaystyle{ a_n 16^n + a_{n-1} 16^{n-1} + \cdots + a_1 16^1 + a_0 }[/math] ,也可以通过 Hornor 法则将其看作多项式求值 [math]\displaystyle{ ((\cdots(a_n x + a_{n-1}) x + \cdots + a_1) x + a_0) \mid_{x=16} }[/math] 。
二进制转换为十六进制
因为 16 本身是 2 的幂,这使得二进制-十六进制混合进制是 2 进制本身。将一个二进制数按照位权为 1 的数位对齐的方式划分成 4 个一组的形式,则新的形式就可以看成一个十六进制数,且其中每一位数都进一步地通过 4 位二进制数表示。将这些二进制数表示对应地换成十六进制中的符号,就得到了对应整个数的十六进制表示。
十六进制转换为二进制
以上过程的逆过程,将十六进制数每一位上的符号替换为 4 位二进制数(位数不足则补 0 ),就得到了一个被 4 位分隔的二进制数。
一些常见数值表示
对有限小数,不列出其对应的无限循环小数形式。
整数(十进制) | 整数(十六进制) | 分数(十进制) | 小数(十六进制) |
---|---|---|---|
1 | 1 | 1/1 | 1 |
2 | 2 | 1/2 | 0.8 |
3 | 3 | 1/3 | [math]\displaystyle{ 0.\overline{5} }[/math] |
4 | 4 | 1/4 | 0.4 |
5 | 5 | 1/5 | [math]\displaystyle{ 0.\overline{3} }[/math] |
6 | 6 | 1/6 | [math]\displaystyle{ 0.2\overline{\mathrm{A}} }[/math] |
7 | 7 | 1/7 | [math]\displaystyle{ 0.\overline{249} }[/math] |
8 | 8 | 1/8 | 0.2 |
9 | 9 | 1/9 | [math]\displaystyle{ 0.\overline{1\mathrm{C}7} }[/math] |
10 | A | 1/10 | [math]\displaystyle{ 0.1\overline{9} }[/math] |
11 | B | 1/11 | [math]\displaystyle{ 0.\overline{1745\mathrm{D}} }[/math] |
12 | C | 1/12 | [math]\displaystyle{ 0.1\overline{5} }[/math] |
13 | D | 1/13 | [math]\displaystyle{ 0.\overline{13\mathrm{B}} }[/math] |
14 | E | 1/14 | [math]\displaystyle{ 0.1\overline{249} }[/math] |
15 | E | 1/15 | [math]\displaystyle{ 0.\overline{1} }[/math] |
16 | 10 | 1/16 | 0.1 |
17 | 11 | 1/17 | [math]\displaystyle{ 0.\overline{0\mathrm{F}} }[/math] |
18 | 12 | 1/18 | [math]\displaystyle{ 0.0\overline{\mathrm{E}38} }[/math] |
19 | 13 | 1/19 | [math]\displaystyle{ 0.\overline{0\mathrm{D}79435\mathrm{E}5} }[/math] |
20 | 14 | 1/20 | [math]\displaystyle{ 0.0\overline{\mathrm{C}} }[/math] |
记数系统 | |||
---|---|---|---|
位值制记数法 | 进位制记数法/标准位值制记数法(进制) | 二进制、八进制、十进制、十六进制、…… | |
非标准位值制记数法 | 带符号进位制记数法/ 平衡记数法(平衡进制) |
平衡三进制、…… | |
双射记数法(双射进制) | 一进制、双射十进制、双射二十六进制、…… | ||
位权是幂 但基数不是自然数 (非自然数进制) |
[math]\displaystyle{ -2 }[/math] 、 [math]\displaystyle{ -4 }[/math] 、…… | ||
[math]\displaystyle{ \sqrt{2} }[/math] 、 [math]\displaystyle{ \sqrt{3} }[/math] 、 [math]\displaystyle{ \sqrt[12]{2} }[/math] 、…… | |||
[math]\displaystyle{ 2i }[/math] 、 [math]\displaystyle{ \sqrt[4]{2}i }[/math] 、 [math]\displaystyle{ 2\omega }[/math] 、 [math]\displaystyle{ \sqrt[3]{2}\omega }[/math] 、 [math]\displaystyle{ -1\pm i }[/math] 、…… | |||
位权不是幂(混合进制) | 二五混合进制、阶乘进制、…… | ||
其他 | [math]\displaystyle{ p }[/math]-进数 | ||
质数记数法、…… | |||
符值制记数法 | 罗马记数法、希腊记数法、…… |