二进制与十六进制之间的转换

| 分类 Programming  | 标签 Programming  CSAPP 

1 位十六进制数对应 4 位 二进制数。

记住三个基准数

记住下面的三个基准数的十六进制表示及对应的二进制表示,对这两种进制数之前的快速转换很有帮助。

  • A: 1010
  • C: 1100
  • F: 1111

B 可以通过 A+1得到,即为 1011; D 可以通过 C+1 得到,即为 1101, E 可以通过F-1得到, 即为 1110。

记住这三个基准数后,可以进行快速的转换,例如:

  • 0x39A7F8 –> 0011 1001 1010 0111 1111 1000
  • 1100 1001 0111 1011 –> 0xC97B
  • 0xD5E4C –> 1101 0101 1110 0100 1100
  • 10 0110 1110 0111 1011 0101 –> 0x26E7B5

当值为 2n 时的转换

当 x = 2n 时,x 的二进制表示为 1 后面跟 n 个 0, 当 x 用十六进制表示时,4 个二进制 0 对应一个十六进制 0, 将 n 变换成: n = i + 4j( 1 <= i <= 3 ),那么 x 用十六进制表示时,对应的首位数字是 2i;后面跟j个0。

因此,可以进行如下变换:

x = 29 = 512 = 21+4*2 = 0x200 x = 219 = 524288 = 23+4*4 = 0x80000 16384 = 214 = 22+4*3 = 0x4000 0x10000 = 20+4*4 = 216 = 65536 217 =21+4*4 = 0x20000 = 131072 32 = 25 = 21+4*1 = 0x20 0x80 = 23+4*1 = 27 = 128


上一篇     下一篇