精华内容
下载资源
问答
  • C语言异或运算符的那些骚操作 文章目录【C语言异或运算符的那些骚操作什么是异或运算符?骚操作1:两个值交换骚操作2:寻找单个数字 什么是异或运算符异或运算符是指: 参与运算两个值,如果两个相应...

    【C语言】异或运算符的那些骚操作

    什么是异或运算符?

    异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
    任何数异或自己,等于把自己置0
    当我们在使用异或运算符的时候计算机会把数字转化为二进制数字然后按位进行运算。
    说了那么多好像异或运算也没啥,其实真的骚的是异或运算的运算,下面让我简单介绍一下异或运算的几个骚操作吧

    骚操作1:两个值的交换

    通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:

    a=10100001, b=00000110

    a=a^b; //a=10100111

    b=b^a; //b=10100001

    a=a^b; //a=00000110

    没想到吧,以后写交换的时候如果用异或操作,保证让你的面试官对你产生一些兴趣

    于是你的冒泡排序变成了这个鸭子

    #include <stdio.h>
    
    int main()
    {
    	int a[5] = {1,3,4,1,3};
    	for(int i=0;i<5;i++)
    	{
    		for(int j=i;j<5;j++)
    		{
    			if(a[i] > a[j])
    			{
    				a[i] = a[i] ^ a[j];
    				a[j] = a[i] ^ a[j];
    				a[i] = a[i] ^ a[j];
    			}
    		}
    	}
    	
    	for(int i=0;i<5;i++)
    	{
    		printf("%d ",a[i]);
    	}
    }
    

    骚操作2:寻找单个的数字

    这个是最近在力扣上面的刷到的一道题,看到题解里面的这种解法我都惊呆了
    链接:https://leetcode-cn.com/problems/single-number
    题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
    说明:
    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:
    输入: [2,2,1]
    输出: 1
    示例 2:
    输入: [4,1,2,1,2]
    输出: 4
    

    这是异或的代码:

    int singleNumber(int* nums, int numsSize){
        int ans  = nums[0];
        if(numsSize > 1)
        {
            for(int i = 1; i < numsSize; i++)
            {
                ans = ans ^ nums[i];
            }
        }
        return ans;
    
    }
    

    怎么样感到异或的强大了吗?


    Keter

    书写不易,如果感觉对你有用就随手点一个赞吧

    展开全文
  • 异或运算符"∧"也称XOR运算符。它规则是若参加运算两个二进位同号,则结果为0(假);异号则为1(真)。即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。 如下函数,实现了 a 和 b 交换~~~~~ reference: ...

     

     

    异或运算符"∧"也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。

     

    如下函数,实现了 a 和 b 的交换~~~~~

     

    reference:

    https://blog.csdn.net/wwt18811707971/article/details/78291490

    展开全文
  • C语言:位异或运算符^  位运算符家族中,最常用,莫过于异或运算符异或运算符是指: 参与运算两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^...
    C语言:位异或运算符^

     位运算符家族中,最常用的,莫过于异或运算符。

    异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

    例如:10100001^00010001=10110000

    0^0=0,0^1=1    可理解为: 0异或任何数,其结果=任何数

    1^0=1,1^1=0    可理解为:1异或任何数,其结果=任何数取反
           

    任何数异或自己,等于把自己置0

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

         用十六进制表示: 0xA1 ^ 0x06 = 0xA7

    (2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:

       a=10100001,   b=00000110

        a=a^b;   // a=10100111

        b=b^a;   // b=10100001

        a=a^b;   // a=00000110

    (3)异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a。(实现两个值的交换正是用到了这点)

    展开全文
  • C语言:位异或运算符

    2014-08-04 18:01:06
    位运算符家族中,最常用,某过于异或运算符异或运算符是指: 参与运算两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=10110000 0^0=0,0^...

    位运算符家族中,最常用的,莫过于异或运算符。

    异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

    0^0=0,0^1=1    可理解为: 0异或任何数,其结果=任何数

    1^0=1,1^1=0    可理解为: 1异或任何数,其结果=任何数取反
    任何数异或自己,等于把自己置0

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

    用十六进制表示: 0xA1 ^ 0x06 = 0xA7

    (2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:

    a=10100001,   b=00000110

    a=a^b;   //a=10100111

    b=b^a;   //b=10100001

    a=a^b;   //a=00000110

    (3)异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a.

    展开全文
  • A:"^"运算符的使用首先是将进行运算数化成二进制数然后进行运算! B:然后将参加运算两个二进制数每一位进行对比如果:相同则为0,否则为1。 C:当二进制数都对比完后,将得到二进制数转化为原来形式。(10...
  • C语言异或运算符的一个应用

    千次阅读 2013-07-25 15:49:34
    参与运算两个值,如果两个相应bit位相同,则结果为0,否则为1。 即:  0^0 = 0,   1^0 = 1,  ...按位异或的3个特点: (1) 0^0=0,0^1=1 0异或任何数=任何数 (2) 1^0=1,1^1=0 1异或任何
  • C语言按位异或运算符

    千次阅读 2017-03-21 19:52:09
    C语言中^为按位异或运算符,若两个二进制位相同,则结果为0,不同为1 #include "stdio.h" main() { int a=6,b=10,c; c=a^b; printf("%d",c); } 函数输出结果为12 将6和10分别转换为2进制数为0110(前边补了个0)和...
  • C语言异或“^”运算符的应用

    千次阅读 2018-05-24 14:00:40
    最近接到项目中涉及到JT808协议,这个协议很长,阅读起来也很费事,不过最终目的就是...简单来说,异或运算符是:判断对应位,相同为0,不同为1。也就是:0^0=0; 1^0=1; //可以理解为任何数和0异或,结果为任...
  • 下面显示了 C 语言支持运算符。假设变量 A 值为 60,变量 B 值为 13,则: (1)&amp;按位与运算符,按二进制位“与”运算。运算规则: 0&amp;0=0; 0&amp;1=0; 1&amp;0=0; 1&amp;1...
  • C语言中位运算符异或“∧”作用

    千次阅读 2018-11-26 10:43:23
    异或运算符∧也称XOR运算符。它规则是若参加运算两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。 “异或”意思是判断两个相应...
  • 异或运算符∧也称XOR运算符。它规则是若参加运算两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。 “异或”意思是判断两个相应...
  • 异或运算符∧也称XOR运算符。它规则是若参加运算两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。“异或”意思是判断两个相应...
  • C++异或运算符

    2019-03-19 08:11:09
         c/c++|、||、&...、异或、~、!运算  (2011-09-16 15:19:50) 转载▼ 标签:  运算符   右移   二进制   左移   c语言   it 分类:...
  • 注意与常用逻辑运算符的区别 位运算符 常用逻辑运算符 按位与:& 与:&& 按位或:| 或:|| 按位异或:^ 非:! 非运算:~ 按位与&:其功能是参与运算两数各对应二进位相与。只有对应两个二进位均为1时,...
  • C语言的 异或运算的 运算原理 应用。需要注意的是 位运算 是符合 交换律, 结合律 及 分配律的
  • C语言的异或 - 运算符"^

    千次阅读 2019-08-19 21:33:07
    最近在完成程序设计入门-C语言中需要计算异或,查阅了很多资料终于明白计算计算原理,记录一下方便以后查询。 流程 举例 为了方便理解,下面结合流程举例说明 a1 = 6 , 转化成二进制 a2 = 0110 b1 = 10,转化成...
  • C语言中,对于移位操作执行是逻辑左移和算术右移,但对于无符号类型所有移位操作都是逻辑。 >> 算术右移,计算规则:右边丢弃,左边补原符号位 算法思想: 例如计算整数 " 3 " 在内存中二进制 " 1 " ...
  • 运算符是用来对二进制位进行操作 c语言中有6种位运算符: & 按位与 [链接]: https://blog.csdn.net/weixin_42837024/article/details/98736834 | 按位或 ^ 按位异或 ~ 取反 << 左移 [链接]:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 803
精华内容 321
关键字:

c语言的异或运算符

c语言 订阅