位运算是直接对整数在内存中的二进制位进行操作,下面详细介绍几种常见的位运算及其计算方式:
注意
位运算的优先级小于 加(+) 、减(-)
按位与(&)
只有对应的两个二进制位都为1时,结果位才为1,否则为0。 示例:计算5 & 3。
5的二进制:0101
3的二进制:0011
-----------
&运算结果:0001 → 转为十进制是1
结论:5 & 3 = 1
按位或(|)
只要对应的两个二进制位中有一个为1,结果位就为1。 示例:计算5 | 3。
5的二进制:0101
3的二进制:0011
-----------
|运算结果:0111 → 转为十进制是7
结论:5 | 3 = 7
按位异或(^)
当对应的两个二进制位相异时,结果位为1。 示例:计算5 ^ 3。
5的二进制:0101
3的二进制:0011
-----------
^运算结果:0110 → 转为十进制是6
结论:5 ^ 3 = 6
按位取反(~)
对每个二进制位进行取反操作,即0变为1,1变为0。 示例:计算~5。
5的二进制:0101
-----------
~运算结果:1010 → 转为十进制是-6(补码表示)
结论:~5 = -6
左移(<<)
将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,高位丢弃,低位补0。 示例:计算5 << 2。
5的二进制:0101
左移2位: 010100 → 转为十进制是20
结论:5 << 2 = 20
右移(>>)
将一个数的各二进制位全部右移若干位,移动的位数由右操作数指定,低位丢弃,高位补符号位(正数补0,负数补1)。 示例:计算5 >> 2。
5的二进制:0101
右移2位: 0001 → 转为十进制是1
结论:5 >> 2 = 1
应用场景
- 交换两个数:通过异或运算可以在不使用临时变量的情况下交换两个数的值。
- 判断奇偶性:通过与1进行按位与运算,可以快速判断一个数是奇数还是偶数。
- 权限控制:利用位运算可以高效地实现权限的增删改查操作。
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com