📜  位运算符 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:06:42.529000             🧑  作者: Mango

位运算符 - C 编程语言

在 C 编程语言中,位运算符用来操作二进制位。这些运算符及其含义如下:

| 运算符 | 描述 | | ------ | ------------------------------------------------------------ | | & | 按位与。如果两个相应的二进制位都为 1,则该位的结果值为 1;否则为 0。 | | | | 按位或。如果两个相应的二进制位都为 0,则该位的结果值为 0;否则为 1。 | | ^ | 按位异或。如果两个相应的二进制位值不同,则该位的结果为 1,否则为 0。 | | ~ | 按位取反。按位取反运算符是一元运算符,用来对一个二进制数按位取反,即将 0 变为 1,将 1 变为 0。 | | << | 左移运算符。将一个数的各二进制位全部左移若干位,高位丢弃,低位补 0。 | | >> | 右移运算符。将一个数的各二进制位全部右移若干位,低位丢弃,高位补 0 或补 1,取决于原来的数是正数还是负数。 |

按位与运算符 - &

按位与运算符 & 的使用方法如下:

result = a & b;

其中 ab 都是整数变量。按位与运算符将两个整数的二进制位一一比较,如果相应位都为 1,则该位的结果为 1;否则为 0。最终的结果是一个整数。

例如,假设 ab 都是 3(即二进制数 11),则 a & b 的结果为 3,因为 11 & 11 等于 11

按位或运算符 - |

按位或运算符 | 的使用方法如下:

result = a | b;

按位或运算符将两个整数的二进制位一一比较,如果相应位都为 0,则该位的结果为 0;否则为 1。最终的结果是一个整数。

例如,假设 ab 都是 5(即二进制数 101),则 a | b 的结果为 5,因为 101 | 101 等于 101

按位异或运算符 - ^

按位异或运算符 ^ 的使用方法如下:

result = a ^ b;

按位异或运算符将两个整数的二进制位一一比较,如果相应位值不同,则该位的结果为 1;否则为 0。最终的结果是一个整数。

例如,假设 ab 都是 6(即二进制数 110),则 a ^ b 的结果为 0,因为 110 ^ 110 等于 000

按位取反运算符 - ~

按位取反运算符 ~ 的使用方法如下:

result = ~a;

按位取反运算符是一元运算符,用来对一个整数按位取反,即将 0 变为 1,将 1 变为 0。最终的结果是一个整数。

例如,假设 a 是 3(即二进制数 11),则 ~a 的结果为 -4(即二进制数 11111100)。

左移运算符 - <<

左移运算符 << 的使用方法如下:

result = a << b;

其中 a 是一个整数,b 是一个整数常量。左移运算符将 a 的二进制位全部左移 b 位,高位丢弃,低位补 0。最终的结果是一个整数。

例如,假设 a 是 5(即二进制数 101),则 a << 2 的结果是 20(即二进制数 10100)。

右移运算符 - >>

右移运算符 >> 的使用方法如下:

result = a >> b;

其中 a 是一个整数,b 是一个整数常量。右移运算符将 a 的二进制位全部右移 b 位,低位丢弃,高位补 0 或补 1,取决于原来的数是正数还是负数。最终的结果是一个整数。

例如,假设 a 是 -5(即二进制数 11111111111111111111111111111011),则 a >> 2 的结果是 -2(即二进制数 11111111111111111111111111111110)。这是因为右移运算符对负数采用的是算数右移,即右移后最高位补 1,而负数的二进制表示最高位为 1。

总结

位运算符是 C 编程语言中用于操作二进制数的特殊运算符。使用这些运算符可以方便地进行位操作,例如将二进制数左移或右移、将二进制数中的某些位取反、将二进制数中的某些位设为 1 或 0 等等。当处理二进制数时,位运算符是必不可少的工具。