目录
&(位与,AND):语法:a & b
作用:将两个整数的对应二进制位进行逐位与运算,如果对应位都为1,则结果对应位为1;否则为0。
|(位或,OR):语法:a | b
作用:将两个整数的对应二进制位进行逐位或运算,如果对应位中至少有一个为1,则结果对应位为1;否则为0。
示例:
- #include
-
- int main() {
- int a = 5; // 二进制表示为 0000 0101
- int b = 10; // 二进制表示为 0000 1010
-
- int and_result = a & b; // 0000 0000
- int or_result = a | b; // 0000 1111
-
- printf("a & b: %d\n", and_result); // 输出 0
- printf("a | b: %d\n", or_result); // 输出 15
-
- return 0;
- }
~):语法:~a
作用:对整数的二进制位进行逐位取反操作,即1变为0,0变为1。
- #include
-
- int main() {
- int a = 5; // 二进制表示为 0000 0101
- int not_result = ~a; // 二进制表示为 1111 1010(补码)
- //输出时补码变原码
- printf("~a: %d\n", not_result); // 输出 -6
-
- return 0;
- }
<<):语法:a << n
作用:将整数的二进制位向左移动n位,右侧用0填充。相当于将整数乘以2的n次方。
- #include
-
- int main() {
- int a = 5; // 二进制表示为 0000 0101
- int left_shift_result = a << 2; // 二进制表示为 0001 0100
-
- printf("a << 2: %d\n", left_shift_result); // 输出 20
-
- return 0;
- }
>>):语法:a >> n
作用:将整数的二进制位向右移动n位,左侧用符号位(对于有符号整数)或0填充(对于无符号整数)。相当于将整数除以2的n次方。
- #include
-
- int main() {
- int a = 20; // 二进制表示为 0001 0100
- int right_shift_result = a >> 2; // 二进制表示为 0000 0101
-
- printf("a >> 2: %d\n", right_shift_result); // 输出 5
-
- return 0;
- }