C语言中提供了6个位操作符。这些运算符只能作用于整形操作数,即只能作用于带符号或者无符号的char、short、int、long类型:
& | 按位与(AND) |
| | 按位或(OR) |
^ | 按位异或(XOR) |
<< | 左移 |
>> | 右移 |
~ | 按位取反(一元运算符) |
下面以整形int为例进行说明(为了便于说明,设置二进制只有8位):
#include "stdio.h" int main(int argc, char const *argv[]) { // 位操作符,只能作用于带符号,或则无符号的基本数据类型 int n = 4; // 4的二进制表示为100 printf("%d\n", n & ~0); //按位与100 & 11111111 = 00000100 即4 printf("%d\n", n | ~0); //按位或100 | 11111111 = 11111111 //为负数,减1取反得00000001 即-1 printf("%d\n", n ^ ~0); //按位异或100 ^ 11111111 = 11111011 //为负数,减1取反得00000101 即-5 printf("%d\n", n << 2); //左移两位得00010000 即4 * (2^2) = 16 printf("%d\n", n >> 2); //右移两位得00000001 即1 printf("%d\n", ~n); //取反的11111011 即-5 return 0; }
按位运算符操作
时间: 2024-10-05 05:50:02