位运算常用技巧
概述
位运算指的是将数据按比特位进行操作,优势在于效率高、耗时少。有些非比特位逻辑场景也可以转变为位运算问题,从而在较低的时间复杂度下实现逻辑,比如查找出现一次的数字、最大单词长度乘积等问题。本文主要总结梳理位运算常见的逻辑技巧以及相应代码并对相关问题进行解析。
基本操作

常用逻辑
判断奇偶数
bool isEven(int n) { if((a & 1) == 0) { return true; } return false; }
位操作交换符号
int reversal(int a) { return ~a + 1; }
位1的个数
int countBit(int n) { int count = 0; while (n > 0) { n = n & (n - 1); count++; } return count; }
最高位的1
int leftBit(int n) { int bit = -1; for (int i = 31; i >= 0; i--) { int tmp = 1 << i; if (num & tmp) { bit = i + 1; break; } } return bit; }
最低位的1
int rightBit(int n) { int bit = 0; for (int i = 0; i < 32; i++) { int tmp = 1 << i; if (num & tmp) { bit = i + 1; break; } } return bit; }
有效位只有一个1
bool isOnlyOne(int n) { return (n & (n - 1)) == 0; } bool isOnlyOne(int n) { return (n & -n) == n; }
有效位全是1
bool isAllOne(int n) { return (n & (n + 1)) == 0; }
2的幂
bool isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; }
4的幂
bool isPowerOfFour(int n) { return n > 0 && (n & (n - 1)) == 0 && (n & 0xaaaaaaaa) == 0; } bool isPowerOfFour(int n) { return n > 0 && (n & (n - 1)) == 0 && n % 3 == 1; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)