怎么用编程进行位运算

时间:2025-01-25 23:14:18 网络游戏

位运算是对整数在内存中的二进制位进行操作的方法,常用的位运算符包括:

按位与(&):

对应位都为1时结果为1,否则为0。例如,`5 & 3` 的结果是 `1`。

按位或(|):

对应位有一个为1时结果为1,否则为0。例如,`5 | 3` 的结果是 `7`。

按位异或(^):

对应位不同时结果为1,相同则为0。例如,`5 ^ 3` 的结果是 `6`。

按位取反(~):

将所有的0变为1,所有的1变为0。例如,`~5` 的结果是 `-6`。

左移(<<):

将一个整数的二进制位向右移动指定的位数。例如,`20 << 2` 的结果是 `80`。

右移(>>):

将一个整数的二进制位向右移动指定的位数,左边空出的位用符号位填充(正数用0填充,负数用1填充)。例如,`(-1) >> 3` 的结果是 `-1`。

示例代码

C++

```cpp

include

int main() {

int a = 5; // 二进制: 0101

int b = 3; // 二进制: 0011

// 按位与

int c = a & b; // 结果为 0001, 即十进制的 1

std::cout << "a & b = "<< c << std::endl;

// 按位或

int d = a | b; // 结果为 0111, 即十进制的 7

std::cout << "a | b = "<< d << std::endl;

// 按位异或

int e = a ^ b; // 结果为 0110, 即十进制的 6

std::cout << "a ^ b = "<< e << std::endl;

// 按位取反

int f = ~a; // 结果为 1010, 即十进制的 -6 (补码表示)

std::cout << "~a = "<< f << std::endl;

// 左移

int g = a << 1; // 结果为 10100, 即十进制的 20

std::cout << "a << 1 = "<< g << std::endl;

// 右移

int h = a >> 1; // 结果为 0010, 即十进制的 2

std::cout << "a >> 1 = "<< h << std::endl;

return 0;

}

```

Python

```python

a = 5 二进制: 0101

b = 3 二进制: 0011

按位与

c = a & b 结果为 1

print("a & b =", c)

按位或

d = a | b 结果为 7

print("a | b =", d)

按位异或

e = a ^ b 结果为 6

print("a ^ b =", e)

按位取反

f = ~a 结果为 -6 (补码表示)

print("~a =", f)

左移

g = a << 1 结果为 20

print("a << 1 =", g)

右移

h = a >> 1 结果为 2

print("a >> 1 =", h)

```

实用技巧

判断奇偶性:

使用 `x & 1` 可以快速判断整数 `x` 的奇偶性,若 `x & 1 == 0` 则 `x` 为偶数,否则为奇数。

交换两数:

利用异或操作,可以不使用额外空间交换两个变量的值: