📅  最后修改于: 2023-12-03 15:13:48.311000             🧑  作者: Mango
移位运算符是 C 语言中的一种特殊运算符,用于对整数进行按位移动。C 语言提供了左移和右移两种移位运算符:<<
(左移)和 >>
(右移)。移位运算符可以在二进制层面上对数字进行快速的乘法和除法运算。本文将介绍移位运算符的使用方法及其输出结果。
<<
左移运算符将一个数字的所有位向左移动指定的位数,右侧空出的位用零填充。其语法如下:
result = number << n;
其中,number
为要进行位移的数字,n
为要左移的位数,result
为左移后得到的结果。
以下是一个示例:
#include <stdio.h>
int main() {
int a = 10; // 二进制为 0000 1010
int b = a << 2; // 左移 2 位
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
输出结果如下:
a = 10
b = 40
左移运算符将数字 10
的二进制表示向左移动 2
位,得到二进制数 101000
,转换为十进制即为 40
。
>>
右移运算符将一个数字的所有位向右移动指定的位数,左侧空出的位用符号位填充。正数的符号位为 0
,负数的符号位为 1
。其语法如下:
result = number >> n;
以下是一个示例:
#include <stdio.h>
int main() {
int a = -10; // 二进制为 1111 0110 (补码表示)
int b = a >> 2; // 右移 2 位
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
输出结果如下:
a = -10
b = -3
右移运算符将 -10
的二进制表示向右移动 2
位,得到二进制数 1111 1101
(补码表示),转换为十进制即为 -3
。
如果移位的位数大于等于整数的位数,那么结果将是不可预测的。因此,在使用移位运算符时应注意位数的合法范围。
对于无符号数,右移运算符使用逻辑右移,等同于逻辑右移,右侧空出的位用零填充。
对于有符号数,右移运算符使用算术右移,符号位会被保留。因此,右移有可能改变数字的符号。
移位运算符的位数可以是变量名或常量。
移位运算符的优先级较低,使用时注意加括号以明确运算顺序。
以上就是 C 程序中移位运算符的介绍和输出结果。移位运算符可以在对数字进行位操作时提供快速的乘法和除法运算的功能。