-
2022-05-05 15:36:33
当n个变量做异或运算时,若有偶数个变量取“1”时,则函数为“0”;若有奇数个变量取“1”,则函数为“1”。
理解:以2个变量取1为例,当变量相邻时,根据异或运算的结合律可先将其做异或运算,结果为0。此时的运算中就变成了很多个0之间做异或运算,最终结果就为0;当变量不相邻时,此时的1都会和0做异或运算,结果为1,那么此时的运算为俩个1和很多个0一起做异或运算,最后就为俩个1做异或运算结果为0。当变量取2n个时,同理,故当n个变量做异或运算时,若有偶数个变量取“1”,则函数为“0”;
若为奇数个变量时,相当于n-1个变量做异或运算时,取偶数个变量为1,则结果为0(上一个结论)。最后在与第n个变量取“1”再做异或运算,则其结果为“1”;
更多相关内容 -
Java编程实现对十六进制字符串异或运算代码示例
2020-08-28 11:32:57主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。 -
C++使用异或运算实现交换两个数的值
2020-08-26 23:33:12交换两个数的值,通常用利用一个变量来交换数值,异或交换两个数的值是资源开销最小的方法,不需要中介数,原理简单的来说就是异或的负负得正 -
异或运算在算法中的经典运用
2020-08-10 15:04:00“一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字?”这是经典的算法题,乍看这个题的思路特别多。 -
异或运算规律
2021-05-22 19:48:351.a ⊕ a = 0 2. a ⊕ b = b ⊕ a 3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ...根据两个相等的数异或值为零:如sum = a ^ b ^ c ^ d,如果随机删去一个变量比如删除b之后的异或和为sum1 = a ^ c ^ d,那么有sum1 = sum^1.a ⊕ a = 0
2. a ⊕ b = b ⊕ a
3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5. a ⊕ b ⊕ a = b.
6.若x是二进制数0101,y是二进制数1011,则x⊕y=1110比较特殊的有:
一 : 自反性:a ^ b ^ a = b。
根据两个相等的数异或值为零:如sum = a ^ b ^ c ^ d,如果随机删去一个变量比如删除b之后的异或和为sum1 = a ^ c ^ d,那么有sum1 = sum^b二: 交换律:a ^ b = b ^ a
任意个数的异或和等于把这些数顺序打乱之后的异或和。(内容不变)三: 结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
d = a ^ b ^ c 可以推出 a = d ^ b ^ c。
-
异或运算常见的应用
2022-01-27 11:16:01“与” 运算 和 “或” 运算,大家对它们可能比较熟悉了 ,“异或” 运算 ...异或是计算机中一种二元逻辑运算, 运算符号是 ^,它按照二进制位进行异或运算,结果为 真 或 假, 它的运算法则如下 x y x^y 0.“与” 运算 和 “或” 运算,大家对它们可能比较熟悉了 ,“异或” 运算 平常使用较少,存在感也不强,如果不是刻意提起,可能还想不到它
其实,“异或” 运算也非常重要,它在加密、备份、算法等方面都有应用,每一位开发的同学都应该花点儿时间掌握它的特点和规律,以便在日常工作中能灵活的运用
接下来将介绍异或运算的一些基础知识以及在实际中的一些应用
基础知识
异或是计算机中一种二元逻辑运算, 运算符号是 ^,它按照二进制位进行异或运算,结果为 真 或 假, 它的运算法则如下
x y x^y 0 0 0 0 1 1 1 0 1 1 1 0 表格 第一列 和 第二列 是异或运算的两个操作数,第三列是异或运算的结果,1 表示真,0 表示假
由表格可知:如果参与运算的两个二进制位相同,则结果为 0 ,否则为 1
也就是说,异或主要用来判断两个值是否相同
重要的性质
下面列出异或运算一些重要的性质,1 表示真,0 表示假, 具体的验证过程比较简单,这里就省略了
1、一个数与自身异或,总是为 0
x ^ x = 0
2、 一个数与 0 异或,总是其自身
x ^ 0 = x
3、 交换性
x ^ y = y ^ x
4、 结合性
x ^ ( y ^ z ) = ( x ^ y ) ^ z
常见应用
异或运算本身比较简单,重点还是在应用层面,上面列出的性质,在很多方面都有应用
- 判断两个数是否相等
一个数与自身异或,总是为 0,我们可以使用这一点来判断两个变量是否相等
( a ^ b ) == 0
当
a
和b
相等时,表达式为真,否则为假- 不使用临时变量交换两个数的值
要交换两个数的值,通常做法是借助一个临时变量,然后再进行交换,比如:
tmp
是临时变量,现需要交换a
和b
两个变量值,过程如下tmp = a a = b b = tmp;
利用异或的一些性质,不用临时变量也能实现交换两个数的值,具体过程如下
a = a ^ b b = a ^ b a = a ^ b
假如初始时,
a = 1、b = 2
第一个等式
a = a ^ b
结果是 a = 1 ^ 2 = 3紧接着第二个等式
b = a ^ b
结果是 b = 1 ^ 2 ^ 2 = 1 ^ 0 = 1最后一个等式
a = a ^ b
结果是 b = 1 ^ 2 ^ 1 = 1 ^ 1 ^ 2 = 0 ^ 2 = 2可以看到,最终
a = 2、 b = 1
,它们的值实现了交换上面的三条语句还可以进一步优化成一条,结果如下
a ^= b ^= a ^= b
- 简化表达式
根据交换性,可以优化表达式中重复变量的异或运算,比如:表达式
a ^ b ^ c ^ a ^ b
可以做如下简化a ^ b ^ c ^ a ^ b # 根据 x ^ y = y ^ x = ( a ^ a ) ^ ( b ^ b ) ^ c # 根据 x ^ x = 0 = 0 ^ 0 ^ c # 根据 x ^ 0 = x = c
- 加密
利用异或运算加密是很常见的加密手段,它涉及到三个变量:明文、密钥、密文,假如它们分别记为
plain_text、 encrypt_key、 cipher_text
明文和密钥进行异或运算,可以得到密文
plain_text ^ encrypt_key = cipher_text
密文和密钥进行异或运算,可以得到明文
cipher_text ^ encrypt_key = ( plain_text ^ encrypt_key ) ^ encrypt_key = plain_text ^ ( encrypt_key ^ encrypt_key ) # 根据 x ^ ( y ^ z ) = ( x ^ z ) ^ y = plain_text ^ 0 # 根据 x ^ x = 0 = plain_text
- 备份
根据异或的性质,异或运算还可以用于文件的备份
现有两个文件
filea
和fileb
,它们进行异或运算,会产生一个新的备份文件bakfile
bakfile = filea ^ fileb
根据异或的性质,可以通过
bakfile
和filea
得到fileb
,或者通过bakfile
和fileb
得到filea
后面无论是
filea
或fileb
文件损坏了,只要不是两个文件同时损坏,都可以通过两者中未损坏的文件 和bakfile
文件,还原得到另一个文件当
filea
文件损坏了,可以通过fileb
和bakfile
进行异或运算得到完好的filea
文件fileb ^ bakfile = fileb ^ ( filea ^ fileb ) = fileb ^ filea ^ fileb # 根据 x ^ ( y ^ z ) = ( x ^ z ) ^ y = fileb ^ fileb ^ filea # 根据 x ^ x = 0 = 0 ^ filea # 根据 x ^ 0 = x = filea
同样,当
fileb
文件损坏了,可以通过filea
和bakfile
进行异或运算得到完好的fileb
文件filea ^ bakfile = filea ^ ( filea ^ fileb ) = filea ^ filea ^ fileb # 根据 x ^ ( y ^ z ) = ( x ^ z ) ^ y = filea ^ filea ^ fileb # 根据 x ^ x = 0 = 0 ^ fileb # 根据 x ^ 0 = x = fileb
解算法题
有些算法可以利用异或的思路进行求解,下面列出力扣上的一道算法题来说明,题目如下:
一个长度为 n-1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 ~ n-1 之内, 在范围 0 ~ n-1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字 示例 1: 输入: [ 0,1,3 ] 输出: 2 示例 2: 输入: [ 0,1,2,3,4,5,6,7,9 ] 输出: 8
最快捷的解决方法是把数组的所有元素以及
0
到n-1
之间的整数 全部进行异或运算arry[0] ^ arry[1] ^ arry[2] ... ^ arry[n-2] ^ 0 ^ 1 ^ 2 .... ^ (n-1)
由于数组元素值范围在
0
到n-1
,且所有元素值都没有重复所以,上述的计算式子中,
0
到n-1
每个数会出现两次,只有缺少的那个数仅出现一次,根据异或的性质x ^ x = 0
可知,相同值之间的异或运算等于0
,因此算式的结果其实就是缺少的那个数下面给出测试文件
test.cpp
,代码是用 C++ 实现的,可以自行用其他语言实现#include <stdint.h> #include <iostream> using namespace std; int32_t find_missing(int32_t *ary, int32_t len) { //数组长度小于等于1,直接返回 -1 if(len <= 1) { return -1; } //结果 int32_t result = 0; //result 和 数组中每一个元素值进行异或运算 for (int32_t i = 0; i < len; i++) { result ^= ary[i]; } //result 和 0 到 n 中每一个值进行异或运算 for (int32_t j = 0; j <= len; j++) { result ^= j; } return result; } //编译: g++ -g -o test test.cpp int32_t main(int32_t argc , char *argv[]) { int32_t ary[] = { 0, 1, 3 }; int32_t result = find_missing(ary, sizeof(ary) / sizeof(int32_t)); std::cout << "result = " << result << std::endl; return 0; }
使用
g++ -g -o test test.cpp
命令编译,接着运行程序,结果如下:[root@localhost test]# ./test result = 2
当然,这道题目还有其他的解法,比如:利用加法来解,大家自己去思考下,这里不做介绍了
题目链接
https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/小结
通过上文,我们可以看到,异或运算在很多方面都有应用,其实,它的应用远不止文中介绍的方面,所以,我们花时间去掌握它是非常值得做的一件事
-
什么是异或_异或运算及异或运算的作用
2020-04-28 21:37:18什么是异或_异或运算及异或运算的作用 异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧...什么是异或_异或运算及异或运算的作用
异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。
异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:
二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),
这些法则与加法是相同的,只是不带进位。
异或略称为XOR、EOR、EX-OR
程序中有三种演算子:XOR、xor、⊕。
使用方法如下
z = x ⊕ y
z = x xor y
异或运算的作用
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
即:
0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0
按位异或的3个特点:
(1) 0^0=0,0^1=1 0异或任何数=任何数
(2) 1^0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
按位异或的几个常见用途:
(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)
举例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);
}
5 应用通式:
对两个表达式执行按位异或。
result = expression1 ^ expression2
参数
result
任何变量。
expression1
任何表达式。
expression2
任何表达式。
说明
^ 运算符查看两个表达式的二进制表示法的值,并执行按位异或。该操作的结果如下所示:
0101 (expression1)1100 (expression2)----1001 (结果)当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1。否则结果的该位为 0。
只能用于整数
下面这个程序用到了“按位异或”运算符:
class E
{ public staTIc void main(String args[ ])
{
char a1=‘十’ , a2=‘点’ , a3=‘进’ , a4=‘攻’ ;
char secret=‘8’ ;
a1=(char) (a1^secret);
a2=(char) (a2^secret);
a3=(char) (a3^secret);
a4=(char) (a4^secret);
System.out.println(“密文:”+a1+a2+a3+a4);
a1=(char) (a1^secret);
a2=(char) (a2^secret);
a3=(char) (a3^secret);
a4=(char) (a4^secret);
System.out.println(“原文:”+a1+a2+a3+a4);
}
}
就是加密啊解密啊
char类型,也就是字符类型实际上就是整形,就是数字。
计算机里面所有的信息都是整数,所有的整数都可以表示成二进制的,实际上计算机只认识二进制的。
位运算就是二进制整数运算啦。
两个数按位异或意思就是从个位开始,一位一位的比。
如果两个数相应的位上一样,结果就是0,不一样就是1
所以111^101=010
那加密的过程就是逐个字符跟那个secret字符异或运算。
解密的过程就是密文再跟同一个字符异或运算
010^101=111
至于为什么密文再次异或就变原文了,这个稍微想下就知道了。。
异或运算:按位异或运算符
首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1相同则为0.该方法被广泛推广用来统计一个数的1的位数!
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
即:
0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0
按位异或的3个特点:
(1) 0^0=0,0^1=1 0异或任何数=任何数
(2) 1^0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
按位异或的几个常见用途:
(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
位运算
位运算时把数字用二进制表示之后,对每一位上0或者1的运算。理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。
其实二进制的运算并不是很难掌握,因为位运算总共只有5种运算:与、或、异或、左移、右移。如下表:
左移运算:
左移运算符m《《n表示吧m左移n位。左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0.比如:
右移运算:
右移运算符m》》n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。但右移时处理最左边位的情形要稍微复杂一点。这里要特别注意,如果数字是一个无符号数值,则用0填补最左边的n位。如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。也就是说如果数字原先是一个正数,则右移之后再最左边补n个0;如果数字原先是负数,则右移之后在最左边补n个1.下面是堆两个8位有符号数作右移的例子:
关于移位的运算有这样的等价关系:把整数右移一位和把整数除以2在数学上是等价的。
计算机内部只识别1、0,十进制需变成二进制才能使用移位运算符《《,》》 。
int j = 8;
p = j 《《 1;
cout《《p《《endl;
在这里,8左移一位就是8*2的结果16 。
移位运算是最有效的计算乘/除乘法的运算之一。
按位与(&)其功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进制位均为1时,结果位才为1,否则为0 。参与运算的数以补码方式出现。
先举一个例子如下:
题目:请实现一个函数,输入一个正数,输出该数二进制表示中1的个数。
这里用到了这样一个知识点:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0 。 那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。
总结:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0 。
位运算的应用可以运用于很多场合:
清零特定位(mask中特定位置0,其它位为1 , s = s & mask)。
取某数中指定位(mask中特定位置,其它位为0, s = s & mask)。
举例:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。
解决方法:第一步,求这两个数的异或;第二步,统计异或结果中1的位数。
接下来我们再举一例,就可以更好的说明移位运算了:用一条语句判断一个整数是不是2的整数次方。
解决方法:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其它所有位都是0 。 根据前面的分析,把这个整数减去1后再和它自己做与运算,这个整数中唯一的1就变成0了。
解答:!(x & (x - 1))
-
深度了解异或运算
2022-05-18 21:42:39很多题目用正常的思路解题会很复杂,但是用异或运算会快速解决问题,所以这一次我们来深入学习异或运算。 一、什么是异或运算? 1.定义:异或,是一个数学运算符,英文为exclusive OR,缩写为XOr,应 -
位异或运算、位与运算、位或运算、位取反运算、左位移运算、右位移运算、无符号右移运算、不用额外变量交换...
2022-06-16 00:25:18位运算符比算术运算符速度要快,但是为什么会快呢?因为算术运算符也是通过计算机...下面是的异或运算过程:异或运算你可以理解为不进位的加法运算。 异或运算满足下面的规律:位与运算符为&,其运算规则是:参与运算的 -
JAVA验证多个参数,类似多个变量的异或XOR但不一样。解决多于2个true返回true,而不是false
2021-12-21 14:56:53JAVA验证多个参数,类似多个变量的异或XOR但不一样。解决多于2个true返回true,而不是false -
详解异或运算
2020-11-12 22:58:50搞不懂异或的朋友看过来,文章写得嘎嘎明白。 -
异或运算 XOR ⊕ 教程
2021-06-21 13:42:57大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要。 本文介绍异或运算的含义和应用。 -
异或运算 XOR 教程
2021-03-13 05:50:08大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要。本文介绍异或运算的含义和应用。一、含义XOR 是 exclusive OR 的缩写。英语的 exclusive 意思是"专有的,独有的... -
异或运算实现两数交换
2019-08-25 20:35:52本文介绍了使用异或运算实现两个数的交换的方法 -
异或运算原理及使用
2020-02-08 15:22:45异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b)(¬为非) 异或也叫半加运算,其运算法则相当于不带进位的二进制... -
前端也要会【异或运算】
2021-09-27 14:04:55在前端的日常开发当中,我们很少用到异或运算,但在一些框架源码当中,会有用到异或运算。我们在阅读源码的时候,会造成代码的不理解,今天我们介绍一下异或运算。 概念 异或,英文为exclusive OR,缩写成eor. 异或... -
高效解答二进制数“多异或”和“多同或”连续运算问题
2020-08-09 16:29:28异或运算 多异或连续运算 同或运算 多同或连续运算 Hello!你好哇,我是灰小猿! 在学习计算机网络的时候,有用到对二进制数进行异或(符号:⊕)和同或(符号:⊙)运算,所以在这里简单记录一下。 在数学中... -
使用异或运算交换两个变量位置的算法非常低!
2018-11-22 19:22:09看了很多编程方面的知识,在慕课网上的一个关于二进制的视频中,偶然听见老师说采用异或运算的方法交换两个数字的顺序可以提高效率,原因是位运算是直接对二进制位进行运算,而二进制位更接近底层。 因此,我一直... -
一文看懂C语言异或运算
2021-05-19 05:32:14描述一、异或运算简介异或运算一般指异或。异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b=(¬a∧b)∨(a∧¬b)如果a、b两个值不相同,则异或结果... -
神奇的异或运算
2019-04-20 16:23:30神奇的异或运算何为异或运算异或运算的特点异或运算的逆运算是其本身异或运算与顺序无关两种特殊的异或异或运算的用途用异或实现swap函数找出唯一不重复的数字 何为异或运算 异或运算是基本bool运算/位运算1的中的... -
leetcode136---异或运算的交换律
2021-05-03 15:07:22位运算法异或运算性质思路2.字典 哈希表法总结 题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以... -
用matlab实现异或运算
2009-08-19 11:11:46在matlab下用BP算法实现异或运算,是自己编的,没有用matlab工具箱,在matlab7.0下可以运行。 -
C语言按位异或运算实现两个数的交换(不用借助第三个变量)(多方法)
2022-08-01 11:03:44C语言按位异或运算实现两个数的交换(不借助第三个变量)(多方法)(题目来源于某公司的面试题) -
什么是异或_异或运算及异或运算的作用 - 全文
2021-06-28 02:51:31异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。... -
通过异或运算优雅的交换两个变量
2020-05-13 15:05:30文章导向:一、常见的交换两个变量的方法二、什么是异或?三、使用异或的方式交换变量 一、常见的交换两个变量的方法 使用临时变量的方法 这个方法应该是大家喜闻乐见的方式,也是最常用最容易想到的。刚踏入编程... -
位运算之异或运算的理解
2018-10-25 09:25:36实验名称:对位运算异或(^)的探究 实验内容:编程实现 输入偶数个数,找出其中出现奇数次的两个...1.首先我们要了解这个异或的的符号的作用,位运算的计算过程都是二进制的,所以我们要探究它的作用,很多情况... -
C++利用异或运算交换两数的值
2019-12-28 17:37:40问题:设计重载函数,必须使用按位异或(^)运算,实现快速交换两个整形变量的和浮点变量的值。 Input: 两个整型数a和b。 两个浮点型变量c和d. Output: 输出交换后对应的值。 例如: 输入 1 2 1.1 2.1 输出 2 1 2.1 ...