位运算
位运算概述
- 计算机以二进制储备,只存在 \(1,0\) 两种状态
- 计算机对于二进制数据的运算叫位运算
按位于运算符(&)
- 两数同时为 \(1\),答案是 \(1\),否则结果是 \(0\)
用途
1.清零
一个数清零,就将其二进制数与 \(0\) 相与,结果为零
2.取一个数的指定位置
如果想取出某一数二进制下的后几位,则可以将其与 \(Y\) 相与,\(Y\) 的定义是要求的位数为 \(1\)
3.判断奇偶
最后一位是 \(1\) 为奇数,\(0\) 则为偶数。因此可以
if ( ( a & 1 == 0 ) )
或运算(|)
- 简单说就是不进数相加,不一样就为1
用途
更改位置为 \(1\)
将要求的位数改成1,就可以与一个要求位数为 \(1\) 数相或,即可完成更改
异或与算符(^)
- 两两相同为 \(0\),不同为 \(1\)
性质
- 交换律
- 结合律 \((a\ xor\ b)xor\ c = a\ xor\ (b\ xor\ c)\)
- 对于任何数 x ,都有 \(a\ xor\ a = 0\ ,\ a \ xor\ 0 = a\)
- 自反性 \(a\ xor\ b\ xor\ b=a\ xor\ 0=a\)
用途
1.翻转指定位
与一个指定位数位 \(1\) 的数相异或,即可
2.与 \(0\) 异或值不变
同性质3
3.交换两个数
void Swap(int &a, int &b){
if (a != b){
a ^= b;
b ^= a;
a ^= b;
}
}
综合使用
\[a+b=((a\&b)<<1)+(a\ xor\ b) \]标签:xor,运算,二进制,异或,位数,清零,233 来源: https://www.cnblogs.com/lToZvTe/p/13922834.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。