Hexadecimal Notation

来自osdev
Zhang3讨论 | 贡献2022年3月3日 (四) 07:23的版本 (创建页面,内容为“'''十六进制表示法(Hexadecimal notation)'''只是表示数字的另一个进制(Base),同样的还比如二进制。 十六进制中有16位数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F。 0到9保留其正常含义,十六进制中的A到F在十进制表示法中是10到15。 作为任何进制,我们都可以通过通用地写出整个数来计算给定数字的值,比如1CA。 十六进制的1CA…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

十六进制表示法(Hexadecimal notation)只是表示数字的另一个进制(Base),同样的还比如二进制

十六进制中有16位数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F。 0到9保留其正常含义,十六进制中的A到F在十进制表示法中是10到15。 作为任何进制,我们都可以通过通用地写出整个数来计算给定数字的值,比如1CA。 十六进制的1CA和以下形式相同:

A*Base^0+C*Base^1+1*Base^2

转换为十进制中,这意味着

10*16^0 + 12*16^1 + 1*16^2

让我们看看这个数字是什么:

10 + 12*16 + 16*16 = 10 + 192 + 256 = 202 + 256 = 458

所以十六进制的1CA和十进制的458是一样的。

十六进制记数法很有用,因为它可以让你轻松地使用二的幂,而不必用二进制写出来。 从十六进制到二进制的转换很容易:每个十六进制数是4位,所以每个十六进制数字对应一个4位的序列。

Hex Binary Base 10
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15

要转换长数字,只需将十六进制数字替换为相应的位序列。 例如

1CA (hex) = 0001 1100 1010 (bin) = 111001010 (bin)

两个十六进制数字正好对应一个字节(8位),与十进制中奇怪的255限制不同,十六进制字节限制是FF。

在编程语言中,十六进制数通常以“0x”作为前缀,以使编译器知道你使用的是十六进制数。 例如:

 0x123 0x0 0xABCDEF 0xCD

另一方面,汇编程序使用后缀“h”来匹配二进制的后缀“b”。 大多数汇编程序也会接受“0x”前缀符号,这通常更清晰。