1. 二进制问题在力扣中的核心地位
二进制运算作为计算机科学的基础语言,在算法面试中占据着不可忽视的地位。根据力扣官方数据统计,涉及位运算的题目在题库中占比约12%,其中既包括纯粹的位操作题,也涵盖了大量需要位运算技巧优化的算法题。我在刷题过程中发现,掌握二进制相关技巧往往能带来时间复杂度上的降维打击——比如将O(n)优化到O(1)的经典案例。
这类题目之所以成为面试常客,是因为它能有效考察候选人对计算机底层原理的理解程度。当面试官要求不使用加减乘除运算符实现两数相加时,就是在考察对位运算和二进制加法的本质认知。我在微软的面试中就遇到过这样一道题:用位运算实现32位无符号整数的除法,这正是LC 29. Divide Two Integers的变种。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 二进制基础操作工具箱
2.1 必须掌握的位运算符
python复制# 基础运算符演示
a = 0b1100 # 12
b = 0b1010 # 10
print(bin(a & b)) # AND: 0b1000 (8)
print(bin(a | b)) # OR: 0b1110 (14)
print(bin(a ^ b)) # XOR: 0b0110 (6)
print(bin(~a)) # NOT: -0b1101 (-13,注意补码表示)
print(bin(a << 2)) # 左移: 0b110000 (48)
print(bin(a >> 1)) # 右移: 0b0110 (6)
关键技巧:XOR运算有三个重要特性:
- a ^ a = 0
- a ^ 0 = a
- 满足交换律和结合律
这些特性在找唯一数等问题中有奇效
2.2 常用位操作技巧速查表
| 操作类型 | 代码实现 | 典型应用场景 |
|---|---|---|
| 判断奇偶 | n & 1 == 1 | LC 338 Counting Bits |
| 交换两数 |
