位运算符的用法 ----非(!),与(&),或(|),异或(^)


位运算符的用法 ----非(!),与(&),或(|),异或(^)

三种运算符均针对二进制

非!:是一元运算符。对一个二进制的整数按位取反,输入0则输出1,输入1则输出0。

例:

0100	-(4) 	输入
1011	-(11)		输出

与&:二元运算符,两个输入。按位计算。输入都是1则输出1;否则输出0;(一0得0)

通俗来讲两个都是1才是1.否则是0

	0100	-(4)	输入1
	1011	-(11)	输入2
 &	0000 -(0)	输出

或|:二元运算符,两个输入。按位计算。输入都是1则输出1;否则输出0;(一0得0)

通俗来讲两个只要有一个是1就是1.否则是0

	0100  -(4)	输入1
	1011  -(11)输入2
|	1111  -(15)输出

异或^ :二元运算符。并不是独立存在的位运算符,而是组合而成。可以用其他的运算符等价表示(相同为0,不同为1)
异或运算按位比较,当输入的两个位相同时输出0,不相同时输出

通俗来讲两个位相同时输出0,不相同时输出

例:将10101101左5位反转
		10101101
		11111000	^
		0101101

异或的特性:
1、交换律 可任意交换运算因子的位置,结果不变

如:a^ b==b^a

2、结合律(即(a ^ b) ^ c == a^ (b^c))

3、对于任何数x,都有x^ x=0,x^0=x,同自己求异或为0,同0求异或为自己

4、自反性 A ^ B ^ B = A ^ 0 = A ,连续和同一个因子做异或运算,最终结果为自己
5、一个数同自己进行偶数次异或运算结果为0、
一个数同自己进行奇数次异或运算结果为本身。

用处

判断奇偶数

7&1==1;判断是否为奇数

7&1==0;判断是否为偶数

图解:


进行两数互换

int a=5;
int b=10;
a=a^b^(b=a);
输出后a=10,b=5

自主进行图解,加深理解,知识不是看会的是动手学会的!!!

如果还有实用的用处,请各路大佬留个言,求求求


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM