[[文章索引]] [[操作系统系列]]

说明

x86系列文章为书籍《x86汇编语言:从实模式到保护模式》的学习笔记,内容属于笔者学习总结性质。

笔者将之发表到博客上,一方面是作为笔记存档,另一方面希望对同在阅读本书的小伙伴起到理解帮助作用。

进制概念

基数:计数法用来表示的数字符号的个数。例如,二进制可用来表示的数字符号有0和1,基数就是2
权:每个数字在不同的位置上(个位、十位、百位……)具有不同的基数放大倍数。用公式表示为(n表示从右数第几位),就是权。
1B、10D、13H:B(Binary)表示二进制、D(Decimal)表示十进制、H(Hexadecimal)表示十六进制。

十进制和其他进制换算规则

10D转换为1010B

将被除数除去对应进制的基数(上例为2),存余再取商继续除去基数,反复直到商为0。将余数从下到上的顺序取回表示成从左到右的数字,就完成了十进制到其他进制的转换。

1010B转换为10D

将每个位置上的数乘对应进制的权,求和结果就是其他进制到10进制转换。

十六进制的换算同理:

30H→48D

48D→30H

实际上这个规则也适用于十进制本身:

12345D→12345D

十六进制的必要性

仔细观察三种进制之间的换算关系:

二进制十进制十六进制
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F

得出结论:

每四位二进制可以和任何一位十六进制互相转换。

而根据这个对应关系表,人类可以将一长串二进制按从右往左每四位为一组迅速转换为十六进制,反之亦然。

1A3BC4H

分割为1|A|3|B|C|4,即可换算24位二进制:

0001 1010 0011 1011 1100 0100

使用十六进制既可以保留二进制的直观性,写起来又简短。