异或运算符

桃扇骨 2022-05-22 06:41 363阅读 0赞
  1. /* ^的特点:a 异或 b 两次得到的还是 a。 */
  2. class OperatorDemo{
  3. public static void main(String[] args) {
  4. int a = 10;
  5. int b = 20;
  6. System.out.println(a ^ b ^ b); //10
  7. System.out.println(a ^ b ^ a); //20
  8. }
  9. }

那么不使用第三个变量,如何交换两个变量的值?

  1. /* 使用位异或运算实现。 */
  2. class Test{
  3. public static void main(String[] args) {
  4. int a = 10;
  5. int b = 20;
  6. a = a ^ b; //现在 a = 10 ^ 20
  7. b = a ^ b; //因为上面a被重新赋值了,所以 b = 10 ^ 20 ^ 20; b = 10;位异或运算的特点。
  8. a = a ^ b; //再来看 a,a 还是上面重新赋值的状态,b的值已经发生变化了。
  9. //所以 a = 10 ^ 20 ^ 10;a = 20
  10. System.out.println("a:"+a+",b:"+b);
  11. }
  12. }
  13. /* 另外一种方案:使用相加减实现。 */
  14. class Test{
  15. public static void main(String[] args) {
  16. int a = 10;
  17. int b = 20;
  18. a = a + b; //现在 a = 10 + 20
  19. b = a - b; //因为上面a被重新赋值了,所以 b = 10 + 20 - 20; b = 10;
  20. a = a - b; //再来看 a,a 还是上面重新赋值的状态,b的值已经发生变化了。
  21. //所以 a = 10 + 20 - 10;a = 20
  22. System.out.println("a:"+a+",b:"+b);
  23. }
  24. }

thanks~

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读

    相关 慎用运算符

    > 异或运算符的特点是:一个整型\[初始值\] 异或 另一个整型 得到的还是 初始值。 今天在做个打乱数组内值的循环的时候,用异或来交换两个随机下标的值,输出结果发现却是混乱