c++ 异或_JAVA中的异或的交换原理

Java中的位运算符中有一个叫做异或的运算符,符号为(^)或者 Xor

异或8个字总结 相同出0 不同出1

int a=1;

int b=1;

System.out.println(a^b);

这里则输出 0

int a=12;

int b=0;

System.out.println(a^b);

这里则输出 12

小结: 相同的两个数会输出0既false ,另一个数为0 则输出它本身,下面为大家演示两个不同的数字

运算规则

其运算规则是:在两个二进制操作数的相同位中

如a=7; b=4;

a=0111; b=0100; (因为int是占据32位的,前面的位数都为0 ,所只展示后4位)

a^b=?

4b8bbd42663b9df335e30daa27ffbbcc.png

得出 a^b =3

下面为大家详细讲解在不使用第三方的情况下交换两个属性中的值

我们要实现的是a=4; b=7;

公式为 a=a^b;

b=a^b;

a=a^b;

第一步分析:

3883464bc187237c95fc757ea067b2a4.png

第一步结束后值为: a=3; b=7;

第二步:b=a^b;

7642570989d4a3134e1f7c1881b7d32b.png

第二步结束后的值:a=3; b=4;

第三步:a=a^b;

c6a069a7c4ad140940d300b9147e2065.png

第三步结束后的值:a=7; b=4;

异或运算有三个特征,一个是0与一个数做异或操作还是本身,本身与本身做异或操作为0,异或操作还满足交换率。

利用a^a=0的特点实现这个功能

在一个数组中找出出现次数为奇数的,也可理解为出现一次的;

这里直接上代码;

6682bc2f8c8274d360e7142f0c4b1b61.png

这里将会直接输出 5

下面是一些异或的基本知识,有兴趣的可研究一下;

  1. a ^ b = b ^ a

  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;

  3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.

  4. a ^ b ^ a = b.

在电脑自带的计算机中可以输入十进制直接转换为2进制,大大的加快了我们理解的速度

6b5f020051d99163b24fbffe0f2efa9e.png

代码千万行,注释第一行。格式不规范,报错两行泪

————————————————

原文链接:https://blog.csdn.net/weixin_45519387/article/details/103232656

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值