16 进制与 2 进制的人脑快速转换

这个技能对于查看 x86 那堆控制寄存器的各个位的开关状态、分解 CR3 寄存器的值之类的操作非常有用。

比如有这么一个数:

0x9abc121

16 进制的一位对应 2 进制的 4 位,把 16 进制的每一位分解成 8 + 4 + 2 + 1 的形式,自高到低排列,就是对应的二进制值了:

8 4 2 1
0 0 0 0

如果分解完了,包含第一行的数,那么所对应的第二行的位是 1,反之是 0。

如:9 = 8 + 1
那么,0x9 = 0b1001

全部按照步骤转换,即为:

1001 1010 1011 1100 0001 0010 0001

2 进制转 16 进制,按照上文步骤反着来,即将二进制数 4 位一分,每 4 位从高到低分别代表 8421,重复相加并将得到的结果写成一个数就行。