常用操作汇总

方法篇

①n的二进制最高位前0的个数:Integer.numberOfLeadingZeros(int n)

衍生用法:

1.计算n的二进制位数:32-Integer.numberOfLeadingZeros(int n)

例题👇

E.位运算-基础——3370. 仅含置位位的最小整数

E.位运算-基础——1342. 将数字变成 0 的操作次数

E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码

E.位运算-基础——2917. 找出数组中的 K-or 值

E.位运算-基础——342. 4的幂

2.得到n的有效二进制位全为1的数:

E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)

②n的二进制中最高位的1所对应的十进制数值:Integer.highestOneBit(int n)

例题👇

E.位运算-基础——3370. 仅含置位位的最小整数

E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码

衍生用法:

得到n的有效二进制位全为1的数:

E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)

③计算二进制中1的个数:Integer.bitCount(int n)

例题👇

E.位运算-基础——191. 位1的个数

E.位运算-基础——338. 比特位计数

A.每日一题——231. 2 的幂

A.每日一题——1356. 根据数字二进制下 1 的数目排序

E.位运算-基础——3226. 使两个整数相等的位更改次数

E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数

E.位运算-基础——1342. 将数字变成 0 的操作次数

A.每日一题——762. 二进制表示中质数个计算置位

A.每日一题——401. 二进制手表

D.二分查找-二分答案-求最大——3143. 正方形中的最多点数

第十六届蓝桥杯大赛软件赛省赛Java 大学 A 组Q3

E.位运算-基础——2595. 奇偶位数

E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)中的2997题

E.位运算-异或:2429. 最小异或

④16位全1的二进制数:0xffff

例题👇

A.每日一题——1356. 根据数字二进制下 1 的数目排序

⑤32位全1的二进制数:-1

例题👇

E.位运算-与或:2871题+2401题中的2871题

0x5555 5555=0101 0101 0101 0101 0101 0101 0101 0101(共32位)

例题👇

E.位运算-基础——342. 4的幂

E.位运算-基础——2595. 奇偶位数

A.每日一题——1758. 生成交替二进制字符串的最少操作数

衍生用法

0xAAAA AAAA=1010 1010 1010 1010 1010 1010 1010 1010(共32位)

A.每日一题——1758. 生成交替二进制字符串的最少操作数

将一个int数值的32位二进制位完全反转,返回反转后的新int:Ineteger.reverse(int n)

例题👇

A.每日一题——190. 颠倒二进制位

String转int:Integer.parseInt(String s) 

举例:Integer.parseInt("101")  // "101"→101

例题👇

A.每日一题——3433. 统计用户被提及情况

B.双指针——2562. 找出数组的串联值

P8598 [蓝桥杯 2013 省 AB] 错误票据

衍生用法

二进制String转int:Integer.parseInt(String s,2)

举例:Integer.parseInt("101",2)  // "101"→5

例题👇

A.每日一题——1404. 将二进制表示减到 1 的步骤数

A.每日一题——1022. 从根到叶的二进制数之和

A.每日一题——1758. 生成交替二进制字符串的最少操作数

A.每日一题——1980. 找出不同的二进制字符串

String转Integer:Integer.valueOf(String s)

例题👇

B.双指针——2562. 找出数组的串联值

第 171 场双周赛Q1——3765. 完全质数

第 481 场周赛Q1——100942. 整数的镜像距离

任意类型转String:String.valueOf()

例题👇

B.双指针——2562. 找出数组的串联值

第 171 场双周赛Q1——3765. 完全质数

第 481 场周赛Q1——100942. 整数的镜像距离

⑪int转二进制字符串:Integer.toBinaryString(int n)    结果无前置0

举例:Integer.toBinaryString(5);  // 5 → "101"

举例:Integer.toBinaryString(3);  // 5 → "1"

例题👇

A.每日一题——868. 二进制间距

E.位运算-基础——3211. 生成不含相邻零的二进制字符串

A.每日一题——1980. 找出不同的二进制字符串

直接生成n个0(用于补充前置位0):"0".repeat(int n)

例题👇

A.每日一题——1980. 找出不同的二进制字符串

技巧篇

①异或消消乐:n^n=0

例题👇

第 470 场周赛Q2——3702. 按位异或非零的最长子序列

贪心算法:14.增减字符串匹配

优选算法-位运算:34.丢失的数字

优选算法-位运算:36.只出现一次的数字Ⅱ

优选算法-位运算:37.消失的两个数字

E.位运算-异或:2588. 统计美丽子数组数目

A.每日一题:2196. 根据描述创建二叉树

②取出n的二进制中第x位:(n>>x)&1

例题👇

D.二分查找-二分答案-求最大——3143. 正方形中的最多点数

E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数

A.每日一题——868. 二进制间距

E.位运算-基础——2917. 找出数组中的 K-or 值

A.每日一题——693. 交替位二进制数

E.位运算-基础——2595. 奇偶位数

A.每日一题——1888. 使二进制字符串字符交替的最少反转次数

A.每日一题——1415. 长度为 n 的开心字符串中字典序第 k 小的字符串

③将n的二进制第x位改为1:n|=(1<<x)

例题👇

E.位运算-基础——2917. 找出数组中的 K-or 值

E.位运算-基础——2657. 找到两个数组的前缀公共数组

E.位运算-基础——面试题 05.01. 插入

将n的二进制第x位改为0:n&=(~(1<<x))

⑥位图思想:将值存进一个int或long里

例题👇

E.位运算-基础——2657. 找到两个数组的前缀公共数组

A.每日一题——3714. 最长的平衡子串 II

A.每日一题——3625. 统计梯形的数目 II

A.每日一题——1411. 给 N x 3 网格图涂色的方案数

A.每日一题——1356. 根据数字二进制下 1 的数目排序

A.每日一题——2154. 将找到的值乘以 2

A.每日一题:874. 模拟行走机器人

⑦取出n的二进制中最右侧的1:n&-n

例题👇

A.每日一题——231. 2 的幂(有n&-n的详细原理解析)

A.每日一题——2154. 将找到的值乘以 2

⑧将n的二进制中最右侧的1改为0:n&(n-1)

例题👇

A.每日一题——231. 2 的幂(有n&(n-1)的详细原理解析)

E.位运算-基础——191. 位1的个数

E.位运算-基础——338. 比特位计数

E.位运算-异或:2429. 最小异或

将n的二进制中最右侧的0改为1:n&(n+1)

E.位运算-异或:2429. 最小异或

2ⁿ:1<<n

例题👇

A.每日一题——231. 2 的幂

E.位运算-基础——191. 位1的个数

A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位

第 491 场周赛Q3——100936. 按位或的最小值

E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码

E.位运算-基础——3370. 仅含置位位的最小整数

E.位运算-异或:1829. 每个查询的最大异或值

'1'→'0';'0'→'1':(char)n^=1

例题👇

A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位(有n^=1的详细原理解析)

A.每日一题——1758. 生成交替二进制字符串的最少操作数

A.每日一题——1888. 使二进制字符串字符交替的最少反转次数

A.每日一题——1980. 找出不同的二进制字符串

衍生用法

1→0;0→1:n^=1

例题👇

E.位运算-基础——2595. 奇偶位数

基础题

用位运算代替数组操作

题目及解析👇

E.位运算-基础——3370. 仅含置位位的最小整数

E.位运算-基础——3226. 使两个整数相等的位更改次数

A.每日一题——1356. 根据数字二进制下 1 的数目排序

E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数

E.位运算-基础——1342. 将数字变成 0 的操作次数

E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码

A.每日一题——868. 二进制间距

E.位运算-基础——2917. 找出数组中的 K-or 值

A.每日一题——693. 交替位二进制数

E.位运算-基础——2657. 找到两个数组的前缀公共数组

E.位运算-基础——面试题 05.01. 插入

A.每日一题——231. 2 的幂

E.位运算-基础——342. 4的幂

E.位运算-基础——191. 位1的个数

E.位运算-基础——338. 比特位计数

E.位运算-基础——2595. 奇偶位数

A.每日一题——2154. 将找到的值乘以 2

E.位运算-基础——3211. 生成不含相邻零的二进制字符串

异或^(XOR)

这里的题目大多是“前缀异或”的思路

题目及解析👇

LeetCode编程入门中第五题:1486. 数组异或操作

E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)

E.位运算-异或:1310. 子数组异或查询

E.位运算-异或:1829. 每个查询的最大异或值

E.位运算-异或:1442. 形成两个异或相等数组的三元组数目

E.位运算-异或:2429. 最小异或

E.位运算-异或:2527. 查询数组异或美丽值

E.位运算-异或:2317. 操作后的最大异或和

E.位运算-异或:2588. 统计美丽子数组数目

与&或|(AND/OR)

&时,1有“保留”的作用,而0有着“去除”的作用

题目及解析👇

E.位运算-与或:2980题+1318题+2419题

E.位运算-与或:2871题+2401题

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐