PYTHON KNOWLEDGE · 11
进制、整数表示与位运算
从位权理解二、八、十六进制,准确使用补码模型、移位、掩码和 Python 大整数。
GESP 3 级GESP 5 级
01 · FORMAL DEFINITION
正式定义
b 进制数按位权 b⁰、b¹…表示数值。进制只是同一个整数的书写方式;位运算直接处理整数的二进制位。Python 整数精度只受可用内存限制,负数位运算按无限长二进制补码语义定义。
02 · MUST KNOW
学完这一章,必须说清楚的规则
- 01
bin/oct/hex 生成带前缀字符串,int(text, base) 按指定进制解析;0b、0o、0x 是整数字面量前缀。
- 02
手工转十进制用位权展开,十进制转其他进制可连续除基取余并逆序。
- 03
& 取共同为 1 的位,| 合并置位,^ 标记不同位,~x 等于 -x-1。
- 04
x << k 相当于 x * 2**k;对非负整数 x >> k 相当于 x // 2**k。
- 05
掩码可检测、设置、清除或翻转特定位;位编号通常从最低位 0 开始。
- 06
固定字长语言的溢出和 Python 大整数行为不同,题目必须明确字长和有无符号。
03 · RUNNABLE EXAMPLE
可运行示例与因果解释
x = 0b101101
print(x, bin(x))
print((x >> 2) & 1)
print(x | (1 << 1))
print(x & ~(1 << 3))COMMON PITFALLS
常见误区
- 把进制字符串当成不同数值类型
- 忘记位编号从 0 开始
- 照搬固定 32 位溢出结论到 Python
- 对负数右移套用无符号模型
SCOPE & BOUNDARIES
适用边界
- 浮点数遵循 IEEE 754 的实现细节,不使用本章的普通整数进制模型直接推导。
- 字符编码把字符映射到整数,但编码知识与整数进制书写是两个不同层次。