自学内容网 自学内容网

简单学点位运算(Java)

1. 位运算符

Java中常用的位运算符如下:
在这里插入图片描述

2. 详解

(1)按位与 &

  • 规则:同一位上全是 1 时,结果为 1,否则为 0。
  • 用途:
    清零某些位:x & 0xF0可以保留高 4 位,清除低 4 位
    判断奇偶数:n & 1为 0 表示偶数,为 1 表示奇数
int a = 5;  // 0101
int b = 3;  // 0011
System.out.println(a & b); // 1 → 0001

(2)按位或 |

  • 规则:同一位上只要有一个 1,结果为 1。
  • 用途:
    设置某些位:x | 0x0F可以将低 4 位设置为 1。
int a = 5;  // 0101
int b = 3;  // 0011
System.out.println(a | b); // 7 → 0111

(3)按位异或 ^

  • 规则:同一位上相同为 0,不同为 1。
  • 用途:
    交换两个数:不使用额外的变量,通过异或完成交换。
    检测位差异。
int a = 5;  // 0101
int b = 3;  // 0011
System.out.println(a ^ b); // 6 → 0110

// 交换两个数
int x = 5, y = 3;
x = x ^ y;
y = x ^ y;
x = x ^ y;
System.out.println(x); // 3
System.out.println(y); // 5

(4)按位取反 ~

  • 规则:0 变 1,1 变 0。
  • 用途:
    快速计算补码。
int a = 5;  // 0101
System.out.println(~a); // -6 → 1010 (补码表示)

(5)左移 <<

  • 规则:将所有位向左移动指定位置,右侧用 0 补充。
  • 用途:
    快速乘以 2 的幂:x << n 相当于 x * 2^n
int a = 5;  // 0101
System.out.println(a << 1); // 10 → 1010

(6)右移(带符号) >>

  • 规则:将所有位向右移动指定位置,高位根据符号位补充(正数补 0,负数补 1)。
  • 用途:
    快速除以 2 的幂:x >> n 相当于 x / 2^n
int a = 5;  // 0101
System.out.println(a >> 1); // 2 → 0010

(7)右移(无符号) >>

  • 规则:将所有位向右移动,高位始终补 0,忽略符号位。
  • 用途:
    用于无符号数的右移操作。
int a = -5;  // 补码表示为:11111111111111111111111111111011
System.out.println(a >>> 1); // 2147483645 → 高位补 0

原文地址:https://blog.csdn.net/weixin_54418006/article/details/143834753

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!