一轮复习——E.位运算模型总结
常用操作汇总
方法篇
①n的二进制最高位前0的个数:Integer.numberOfLeadingZeros(int n)
衍生用法:
1.计算n的二进制位数:32-Integer.numberOfLeadingZeros(int n)
例题👇
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
2.得到n的有效二进制位全为1的数:
E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)
②n的二进制中最高位的1所对应的十进制数值:Integer.highestOneBit(int n)
例题👇
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
衍生用法:
得到n的有效二进制位全为1的数:
E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)
③计算二进制中1的个数:Integer.bitCount(int n)
例题👇
A.每日一题——1356. 根据数字二进制下 1 的数目排序
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
D.二分查找-二分答案-求最大——3143. 正方形中的最多点数
E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)中的2997题
④16位全1的二进制数:0xffff
例题👇
A.每日一题——1356. 根据数字二进制下 1 的数目排序
⑤32位全1的二进制数:-1
例题👇
E.位运算-与或:2871题+2401题中的2871题
⑥0x5555 5555=0101 0101 0101 0101 0101 0101 0101 0101(共32位)
例题👇
A.每日一题——1758. 生成交替二进制字符串的最少操作数
衍生用法
0xAAAA AAAA=1010 1010 1010 1010 1010 1010 1010 1010(共32位)
A.每日一题——1758. 生成交替二进制字符串的最少操作数
⑦将一个int数值的32位二进制位完全反转,返回反转后的新int:Ineteger.reverse(int n)
例题👇
⑧String转int:Integer.parseInt(String s)
举例:Integer.parseInt("101") // "101"→101
例题👇
衍生用法
二进制String转int:Integer.parseInt(String s,2)
举例:Integer.parseInt("101",2) // "101"→5
例题👇
A.每日一题——1758. 生成交替二进制字符串的最少操作数
⑨String转Integer:Integer.valueOf(String s)
例题👇
⑩任意类型转String:String.valueOf()
例题👇
⑪int转二进制字符串:Integer.toBinaryString(int n) 结果无前置0
举例:Integer.toBinaryString(5); // 5 → "101"
举例:Integer.toBinaryString(3); // 5 → "1"
例题👇
A.每日一题——868. 二进制间距E.位运算-基础——3211. 生成不含相邻零的二进制字符串
⑫直接生成n个0(用于补充前置位0):"0".repeat(int n)
例题👇
技巧篇
①异或消消乐:n^n=0
例题👇
第 470 场周赛Q2——3702. 按位异或非零的最长子序列
②取出n的二进制中第x位:(n>>x)&1
例题👇
D.二分查找-二分答案-求最大——3143. 正方形中的最多点数
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
A.每日一题——1888. 使二进制字符串字符交替的最少反转次数
A.每日一题——1415. 长度为 n 的开心字符串中字典序第 k 小的字符串
③将n的二进制第x位改为1:n|=(1<<x)
例题👇
④将n的二进制第x位改为0:n&=(~(1<<x))
⑥位图思想:将值存进一个int或long里
例题👇
A.每日一题——1411. 给 N x 3 网格图涂色的方案数
A.每日一题——1356. 根据数字二进制下 1 的数目排序
⑦取出n的二进制中最右侧的1:n&-n
例题👇
A.每日一题——231. 2 的幂(有n&-n的详细原理解析)
⑧将n的二进制中最右侧的1改为0:n&(n-1)
例题👇
A.每日一题——231. 2 的幂(有n&(n-1)的详细原理解析)
⑨将n的二进制中最右侧的0改为1:n&(n+1)
⑩2ⁿ:1<<n
例题👇
A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
⑪'1'→'0';'0'→'1':(char)n^=1
例题👇
A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位(有n^=1的详细原理解析)
A.每日一题——1758. 生成交替二进制字符串的最少操作数
A.每日一题——1888. 使二进制字符串字符交替的最少反转次数
衍生用法
1→0;0→1:n^=1
例题👇
基础题
用位运算代替数组操作
题目及解析👇
A.每日一题——1356. 根据数字二进制下 1 的数目排序
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
异或^(XOR)
这里的题目大多是“前缀异或”的思路
题目及解析👇
E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)
与&或|(AND/OR)
&时,1有“保留”的作用,而0有着“去除”的作用
题目及解析👇
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)