跳到主要内容

进制与位级表示

为什么用十六进制书写位模式?​

  • 压缩比: 1 位十六进制恰好表示 4 位二进制, 书写长度是二进制的四分之一;
  • 惯例: 以 0x 开头, 例如 0x1A2B;
二进制十六进制十进制
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

二进制和十六进制怎样互转?​

  • 二进制转十六进制: 从右往左每 4 位分一组, 最左不足 4 位补 0, 每组查表替换;
  • 十六进制转二进制: 每个十六进制数字展开为 4 位二进制;
  • 示例: 0x1A2B 展开为 0001 1010 0010 1011;

十进制和十六进制怎样互转?​

  • 整数部分: 反复整除 16, 记录余数, 最后把余数倒序排列;
  • 小数部分: 反复乘以 16, 依次记录乘积的整数部分, 直到小数部分为 0;
314156 = 0x4CB2C
314156 / 16 = 19634 ... 12 (C)
19634 / 16 = 1227 ... 2
1227 / 16 = 76 ... 11 (B)
76 / 16 = 4 ... 12 (C)
4 / 16 = 0 ... 4
余数倒序得 4CB2C

0.75 × 16 = 12.0 → 取 12 (C)
小数部分为 0, 停止; 0.75 = 0x0.C

布尔运算有哪些?​

  • 非 (~): 1 变 0, 0 变 1;
  • 与 (&): 两位都为 1 时结果为 1;
  • 或 (|): 任一位为 1 时结果为 1;
  • 异或 (^): 两位不同时结果为 1;
  • 位向量: 长度为 w 的位串, 可对每一位独立施加布尔运算;