精华内容
下载资源
问答
  • A:"^"运算符的使用首先是将进行运算的数化成二进制数然后进行运算! B:然后将参加运算的两个二进制数的每一位进行对比如果:相同则为0,否则为1。 C:当二进制数都对比完后,将得到的二进制数转化为原来的形式。(10...

    争取简单易懂!

    A:"^"运算符的使用首先是将进行运算的数化成二进制数然后进行运算!

    B:然后将参加运算的两个二进制数的每一位进行对比如果:相同则为0,否则为1

    C:当二进制数都对比完后,将得到的二进制数转化为原来的形式。(10进制数)

    例如:

    a=3 (二进制数为011); 
    b=5 (二进制数为101);
    则:
            a(011)
            b(101)  
    a=a^b= 6110)
    此结果就是进行运算后得到的结果
    

    下面再来一道例题进行加深解释

    例:在不能创建第三个变量的条件下,首先两个数的交换

    #include<stdio.h>
    int main()
    {
        int a=3;
        int b=5;
        a=a^b;
        b=a^b;
        a=a^b;
        printf("%d %d",a,b);
        return 0;
    }
    

    可以按照上面的方式自己动手进行运算一下

    总结:异或运算符用处较多,实际上就是摸二运算!

    个人心得:希望可以提高自己的效率!

    展开全文
  • C语言异或运算符的一个应用

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

    例如:10100001^00010001=10110000

    按位异或的3个特点:
    (1) 0^0=0,0^1=1  0异或任何数=任何数
    (2) 1^0=1,1^1=0  1异或任何数-任何数取反

    (3)              任何数异或自己=把自己置0


    一个典型应用: 快速判断两个值是否相等(使用异或可以加快程序运行的效率)

        举例1: 判断两个整数a,b是否相等,则可通过下列语句实现:
            return ((a ^ b) == 0)
        
        举例2: Linux中最初的ipv6_addr_equal()函数的实现如下:
        static inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)
        {
            return (a1->s6_addr32[0] == a2->s6_addr32[0] &&
                    a1->s6_addr32[1] == a2->s6_addr32[1] &&
                    a1->s6_addr32[2] == a2->s6_addr32[2] &&
                    a1->s6_addr32[3] == a2->s6_addr32[3]);
        }
        
        可以利用按位异或实现快速比较, 最新的实现已经修改为:
        static inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)
        {
             return (((a1->s6_addr32[0] ^ a2->s6_addr32[0]) |
                      (a1->s6_addr32[1] ^ a2->s6_addr32[1]) |
                      (a1->s6_addr32[2] ^ a2->s6_addr32[2]) |
                      (a1->s6_addr32[3] ^ a2->s6_addr32[3])) == 0);
        }

    展开全文
  • 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

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

    展开全文
  • 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。(实现两个值的交换正是用到了这点)

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

    万次阅读 多人点赞 2016-07-30 10:32:53
    C语言异或运算 位运算符家族中,最常用的,某过于异或运算符异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=...
  • c语言 ^运算符
  • ^表示按位异或运算符,顾名思义,相异,即不同则为1,反之为0例如15和16进行异或运算,运算过程如下:15000000000000000000000000000011111600000000000000000000000000010000^------------------------------------...
  • 异或交换两个数: #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int main() { int a, b; a = 10; b = 20; a= a^b; b =a^b; a =a^b; printf("%d\n%d\n", a, b); system(&...
  • 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语言异或运算位运算符家族中,最常用的,某过于异或运算符异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0例如:10100001^00010001=...
  • 下面显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则: (1)&amp;按位与运算符,按二进制位“与”运算。运算规则: 0&amp;0=0; 0&amp;1=0; 1&amp;0=0; 1&amp;1...
  • ^按位异或运算符

    2016-08-27 21:06:00
    C语言中按位异或运算符^: 0^1 = 1 1^1 = 0 与1异或就是取反; 0^0 = 0 1^0 = 1 与0异或原位不变; 转载于:https://www.cnblogs.com/prayer521/p/5813803.html
  • C语言运算符异或^

    千次阅读 2019-04-23 13:23:23
    异或:位运算符,两数相"异",则为真(1)。简单的描述其作用就是0 ^ 1=1,0 ^ 0=0,1 ^ 1=0。参加运算的两个二进制位为同号,则结果为0,异号则为1。 异或的特性及应用: 1.使特定位翻转  假设有01111010,想使其低4...
  • C++异或运算符

    2019-03-19 08:11:09
         c/c++的|、||、&...、异或、~、!运算  (2011-09-16 15:19:50) 转载▼ 标签:  运算符   右移   二进制   左移   c语言   it 分类:...
  • C语言运算符异或^的简单介绍

    千次阅读 2017-04-14 09:08:54
    异或:位运算符,"异或"顾名思义就是两数相"异",则为真(1)。简单的描述其作用就是0^1=1,0^0=0,1^1=0。参加运算的两个二进制位为同号,则结果为0,异号则为1. _________________________________________________...
  • 按位异或:^ 非:! 非运算:~ 按位与&:其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。  例如:9&5可写算式如下: 00001001 ...
  • c语言中有6种位运算符: & 按位与 [链接]: https://blog.csdn.net/weixin_42837024/article/details/98736834 | 按位或 ^ 按位异或 ~ 取反 << 左移 [链接]:...
  • C语言运算符总结

    千次阅读 2013-06-09 22:53:08
    C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言...^ 按位异或运算符 ~ 按位取反运算符 这些运算符都是对于基本数据类型的二进制位进行操作的,这
  • C语言中,对于移位操作执行的是逻辑左移和算术右移,但对于无符号类型所有的移位操作都是逻辑的。 >> 算术右移,计算规则:右边丢弃,左边补原符号位 算法思想: 例如计算整数 " 3 " 在内存中二进制 " 1 " 的...

空空如也

空空如也

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

c语言异或运算符

c语言 订阅