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