本文共 685 字,大约阅读时间需要 2 分钟。
异或: 1表达:a^b=a⊕b=aXORb; 既相同为0,不同为1; 1^1=0; 1^0=1; 用途: 1、交互两个数:a=5,b=10,用异或实现交换
程序代码:
#includeint main(){ int a=5; int b=10; a=a^b; b=a^b;// a=a^b; printf("%d %d\n",a,b); return 0;}
2、因为电脑的数都是二进制的,所以可以转化二进制的位数和统计二进制中1或者0是奇数还是偶数。
(1):位反转
举例:10001000 在一些情况下,第四位和第五位需要反转,可以用10001000与00011000进行异或运算。 10001000 ^ 00011000 = 10010000 (2):统计某一位的奇偶数 将某个元素中的每一位逐步异或. 例如a1=1010,则b1=1 ^ 0 ^ 1 ^ 0 = 0,由此可以判断a中为1的位数是奇数还是偶数。 例如a2=10110,则b2=1 ^ 0 ^ 1 ^ 1 ^ 0 =1,由此可以判断a中为1的位数是奇数还是偶数。3、找出序列中单个最小的数字:
程序代码:
#includeint main(){ int a,b,c,d,e,f,n,m; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); n=a^b^c^d^e; printf("%d\n",n); return 0;}
扩展:&(与)运算 都是1时结果才为1; 二进制与运算规则:1&1=1 1&0=0 0&0=0
转载地址:http://yexzi.baihongyu.com/