^运算的运用

Posted 背时的哥哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了^运算的运用相关的知识,希望对你有一定的参考价值。

//^运算:无进位相加,满足结合律与交换律

//例:整型数组中,只有一个数出现了奇数次,其余数出现了偶数次,求这个数
//例:整型数组中,只有两个数出现了偶数次,其余数出现了偶数次,求这两个数
public class Test1

public void one(int nums[])
    int r = 0;
    for (int num : nums) 
        r ^= num;
    
    System.out.println(r);



public void two(int[] nums)
    int r = 0;
    for (int num : nums) 
        r ^= num;
    
    //若设这两个数分别为a,b,,则此时r==a^b;
    //a!=b,则r的某一位一定为1,找出r最右则为一的位,并以此为依据将数组中的数进行分类
    int q = r & (~r + 1);//取r最右侧的1
    int r1 = 0;
    for (int num : nums) 
        if ((num&q)==0)
            r1 ^= num;
        
    
    System.out.println(r1+"   "+(r^r1));

以上是关于^运算的运用的主要内容,如果未能解决你的问题,请参考以下文章

取余数运算

取余数运算

为啥 operator% 被称为“模数”运算符而不是“余数”运算符?

Java 线程在循环中执行余数运算会阻塞所有其他线程

java运算符

二分查找算法