boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

Java中如何使用位运算符解决问题


avatar
作者 2025年9月18日 8

运算符直接操作二进制位,提升效率。①&用于判断奇偶:n&1==1为奇数;②^可交换数值:a=a^b;b=a^b;a=a^b;③n&(n-1)统计1的个数;④^遍历数组找出唯一单次元素;⑤>>保持符号,>>>高位补0;⑥仅适用于整数类型,移位勿超32或64位限制。

Java中如何使用位运算符解决问题

位运算符在Java中直接对整数类型的二进制位进行操作,效率高且常用于优化算法或处理底层逻辑。掌握这些运算符能帮助你解决一些特定问题,比如判断奇偶、交换数值、统计1的个数等。

常用位运算符及其作用

Java中常用的位运算符包括:

  • &(按位与):两个位都为1时结果才为1
  • |(按位或):两个位有一个为1结果就为1
  • ^(按位异或):两个位不同结果为1,相同为0
  • ~(按位取反):每一位0变1、1变0
  • <<(左移):左移n位相当于乘以2的n次方
  • >>(右移):右移n位相当于除以2的n次方(带符号扩展)
  • >>>(无符号右移):右移补0,不考虑符号位

常见应用场景与技巧

利用位运算可以简洁高效地实现某些逻辑判断和计算。

判断一个数是否为奇数

使用

&

运算判断最低位是否为1:

立即学习Java免费学习笔记(深入)”;

if ((n & 1) == 1) {     System.out.println("是奇数"); }

因为偶数的二进制末位是0,奇数是1,所以

n & 1

可以直接判断奇偶性。

交换两个数而不使用临时变量

利用

^

的自反性:

a = a ^ b; b = a ^ b; // 相当于 a ^ b ^ b = a a = a ^ b; // 相当于 a ^ b ^ a = b

这样就完成了a和b的交换,但实际开发中建议还是用临时变量,提高可读性。

统计一个数的二进制中1的个数

Java中如何使用位运算符解决问题

QoQo

QoQo是一款专注于UX设计的AI工具,可以帮助UX设计师生成用户角色卡片、用户旅程图、用户访谈问卷等。

Java中如何使用位运算符解决问题84

查看详情 Java中如何使用位运算符解决问题

使用

n & (n - 1)

可以清除最右边的1:

int count = 0; while (n != 0) {     n = n & (n - 1);     count++; }

每执行一次

n & (n-1)

,n的二进制表示中就少一个1,直到为0为止。

找出只出现一次的数字(其他都出现两次)

利用

^

的性质:a ^ a = 0,a ^ 0 = a。

int result = 0; for (int num : nums) {     result ^= num; }

所有成对出现的数异或后为0,最后剩下的就是唯一出现的数。

注意事项与限制

位运算虽然高效,但也有一些需要注意的地方。

  • 只能用于整数类型(byte、short、int、long)
  • 右移
    
    

    会保留符号位,负数右移仍为负;

    则无符号右移,高位补0
  • 移位操作不要超过数据类型的位数,如int是32位,避免
    << 35

    这类操作

  • 优先级较低,注意加括号,例如
    (n & 1) == 1

    ,否则可能出错

基本上就这些。位运算适合在性能敏感或空间受限的场景中使用,理解其原理后能写出更高效的代码。



评论(已关闭)

评论已关闭