温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java异或和或有何区别

发布时间:2026-09-18 23:12:05 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java(以及计算机底层逻辑)中,异或(^) 和 或(|) 是两种不同的位运算符,作用在点对点的二进制位上,区别非常明确。


一、按位“或” |(OR)

规则:

  • 只要对应位中有一个是 1,结果就是 1
  • 只有两位都是 0,结果才是 0

真值表

a b a | b
0 0 0
0 1 1
1 0 1
1 1 1

示例

int a = 5;  // 0101
int b = 3;  // 0011
int c = a | b; // 0111 = 7

二、按位“异或” ^(XOR)

规则:

  • 两位不同时结果为 1
  • 两位相同时结果为 0

真值表

a b a ^ b
0 0 0
0 1 1
1 0 1
1 1 0

示例

int a = 5;  // 0101
int b = 3;  // 0011
int c = a ^ b; // 0110 = 6

三、核心区别总结

| 对比项 | 或 | | 异或 ^ | |------|------|---------| | 1 | 1 | 1 | 0 | | 是否关心“是否相同” | 不关心 | 关心 | | 常见用途 | 合并标志位 | 切换 / 加密 / 去重 | | 是否可逆 | 否 | 是(x ^ y ^ y = x) |


四、典型使用场景(Java 中)

1️⃣ 或 |:设置标志位

int FLAG_A = 1; // 0001
int FLAG_B = 2; // 0010
int flags = FLAG_A | FLAG_B; // 0011

2️⃣ 异或 ^:交换变量(不用临时变量)

a = a ^ b;
b = a ^ b;
a = a ^ b;

3️⃣ 异或:找出数组中唯一出现一次的数

int result = 0;
for (int x : arr) {
    result ^= x;
}

五、补充:逻辑运算符 vs 位运算符

  • ||、&&:逻辑运算符(布尔)
  • |、&、^:位运算符(也可用于 boolean,但不短路)

如果你愿意,我也可以用图或算法题例子帮你更直观地理解。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手