C语言中位运算符有哪些
更新时间:2023-07-09介绍
位运算是计算机中常用的一种运算方式,它们是在二进制数字位上进行的运算。位运算符仅适用于整数类型,例如 int
和 long
。C 语言中位运算符总共有 6 个,分别是:左移位运算符、右移位运算符、按位与运算符、按位或运算符、按位异或运算符和按位取反运算符。
左移位运算符 (<<)
左移位运算符 (<<
) 按照指定的位数将给定的数向左移动,在右边用零填充空缺的各位。左移位运算符的语法如下所示:
result = num << x;
其中,num
是要进行运算符的数,x
是要移动的位数,result
是左移位运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num = 8, result;
result = num << 2;
printf("左移 2 位后的结果为 %d", result);
return 0;
}
上述代码将输出 左移 2 位后的结果为 32
。
右移位运算符 (>>)
右移位运算符 (>>
) 按照指定的位数将给定的数向右移动,丢弃右边多余的位。如果这个数是一个正数,则在左边插入零;如果这个数是一个负数,则在左边插入一组 1。右移位运算符的语法如下所示:
result = num >> x;
其中,num
是要进行运算符的数,x
是要移动的位数,result
是右移位运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num = 8, result;
result = num >> 2;
printf("右移 2 位后的结果为 %d", result);
return 0;
}
上述代码将输出 右移 2 位后的结果为 2
。
按位与运算符 (&)
按位与运算符 (&
) 的作用是对两个数的二进制形式进行按位与操作,这意味着将两个二进制数字的每一位进行比较,只有相同的位才输出 1。按位与运算符的语法如下所示:
result = num1 & num2;
其中,num1
和 num2
是要进行运算符的数,result
是按位与运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num1 = 12, num2 = 25, result;
result = num1 & num2;
printf("按位与的结果为 %d", result);
return 0;
}
上述代码将输出 按位与的结果为 8
。
按位或运算符 (|)
按位或运算符 (|
) 的作用是对两个数的二进制形式进行按位或操作,这意味着将两个二进制数字的每一位进行比较,只要其中有一个为 1,就输出 1。按位或运算符的语法如下所示:
result = num1 | num2;
其中,num1
和 num2
是要进行运算符的数,result
是按位或运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num1 = 12, num2 = 25, result;
result = num1 | num2;
printf("按位或的结果为 %d", result);
return 0;
}
上述代码将输出 按位或的结果为 29
。
按位异或运算符 (^)
按位异或运算符 (^
) 的作用是对两个数的二进制形式进行按位异或操作,这意味着将两个二进制数字的每一位进行比较,只有相同的位输出 0,不同的位输出 1。按位异或运算符的语法如下所示:
result = num1 ^ num2;
其中,num1
和 num2
是要进行运算符的数,result
是按位异或运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num1 = 12, num2 = 25, result;
result = num1 ^ num2;
printf("按位异或的结果为 %d", result);
return 0;
}
上述代码将输出 按位异或的结果为 21
。
按位取反运算符 (~)
按位取反运算符 (~
) 的作用是对给定的数的二进制形式进行按位取反操作,这意味着每一位上的 0 都变成了 1,1 都变成了 0。按位取反运算符的语法如下所示:
result = ~num;
其中,num
是要进行运算符的数,result
是按位取反运算符的结果。下面是一个简单的示例:
#include <stdio.h>
int main() {
int num = 12, result;
result = ~num;
printf("按位取反的结果为 %d", result);
return 0;
}
上述代码将输出 按位取反的结果为 -13
,原因是对于有符号整数,最高位为符号位,0 为正数,1 为负数,按位取反后得到的为负数。