^运算的运用

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));

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

位运算的特殊运用

巧妙运用 按位或“|” 运算

异或运算与运算或运算 运用在 多项选择题

如何运用Java中的位移运算符?

java-运算符以及简单运用

js逻辑运算符的运用