我是靠谱客的博主 深情月光,这篇文章主要介绍C语言.异或^的妙用,现在分享给大家,希望可以做个参考。

异或^:位运算符号,相同的位置0,不同的位置1:
例:0101^0001=0100

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
例:输入 2 2 1 输出 1
,输入 2 3 3 1 2 输出 1
C语言实现:
int singleNumber(int* nums, int numsSize) {
int result=0;
for(int i=0;i<numsSize;i++)
result^=nums[i];
return result;
}

汇总:

(1) 使某些特定的位翻转
例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。
      10100001^00000110 = 10100111

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

(3) 在汇编语言中经常用于将变量置零:
xor a,a

(4) 快速判断两个值是否相等
举例1: 判断两个整数a,b是否相等,则可通过下列语句实现:
return ((a ^ b) == 0)

最后

以上就是深情月光最近收集整理的关于C语言.异或^的妙用的全部内容,更多相关C语言.异或^内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部