首页 > 编程知识 正文

按位异或运算符怎么用,异或程序符号

时间:2023-05-06 02:10:25 阅读:264619 作者:3572

一.运算法则

异或运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

即相同为0,不同为1。在计算机语言中,异或的符号为“^”。

举例:0 ^ 0 = 0; 0 ^ 1 = 1; *//可以理解为任何数和0异或,结果为任何数本身。* 1 ^ 0 =1 ; 1 ^ 1 = 0; *//可以理解为任何数和1异或,结果为任何数取反。*

二.用途

位反转
举例:10001000 在一些情况下,第四位和第五位需要反转,可以用10001000与00011000进行异或运算。
10001000 ^ 00011000 = 10010000

实现两个值的交换,而不必使用临时变量。
例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
    a = a^b;   //a=10100111
    b = b^a;   //b=10100001
    a = a^b;   //a=00000110

统计某一位的奇偶数
将某个元素中的每一位逐步异或.
例如a1=1010,则b1=1 ^ 0 ^ 1 ^ 0 = 0,由此可以判断a中为1的位数是奇数还是偶数。
例如a2=10110,则b2=1 ^ 0 ^ 1 ^ 1 ^ 0 =1,由此可以判断a中为1的位数是奇数还是偶数。

只出现一次的数字(力扣136)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

提示:数组中其余元素只出现两次;
0 ^ n = n;

int singleNumber(vector<int>& nums) { int len = nums.size(); int result=0; for(int i=0;i<len;i++){ result ^=nums[i]; } return result; }

这种做法的好处是,不需要额外的存储空间。

三.总结
在特定情况下使用异或操作可以减少临时变量。
第一次写博客,多为摘录,如果有错误的地方,还希望大家斧正。

摘录:https://blog.csdn.net/xiezhongyuan07/article/details/79248516

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。