我是靠谱客的博主 深情月光,最近开发中收集的这篇文章主要介绍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语言.异或^的妙用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部