📜  C C++中的左移和右移运算符(1)

📅  最后修改于: 2023-12-03 14:39:37.688000             🧑  作者: Mango

C/C++中的左移和右移运算符

在C/C++语言中,左移运算符(<<)和右移运算符(>>)是用于移位操作的二元运算符。

左移运算符

左移运算符(<<)将操作数的二进制表示向左移动指定位数,右侧用0填充空出的位。左移运算符的语法如下所示:

result = value << numBits;

其中,value是被移动的值,numBits是指定的位数,result是移位后的结果。

例如,以下代码将整数变量num左移4位后赋值给变量result

int num = 5;
int result = num << 4; // result = 80

解释如下:

num    = 0000 0101 
num<<4 = 0101 0000 
result = 80
右移运算符

右移运算符(>>)将操作数的二进制表示向右移动指定位数,左侧用符号位填充空出的位(对于有符号整数),无符号整数则用0填充。右移运算符的语法如下所示:

result = value >> numBits;

其中,value是被移动的值,numBits是指定的位数,result是移位后的结果。

例如,以下代码将整数变量num右移2位后赋值给变量result

int num = -10;
int result = num >> 2; // result = -3

解释如下:

num    = 1111 0110 
num>>2 = 1111 1101 
result = -3

注意:对于左移运算符和无符号整数,右侧用0填充空出的位;而对于右移运算符和无符号整数,左侧用0填充空出的位。

应用场景

左移运算符和右移运算符通常用于位运算和乘除2的幂运算。以下是一些应用场景示例:

  • 位运算:通过左移运算符和按位或(|)运算符可以将多个布尔值或标志位组合到一个整数中。
  • 乘除2的幂运算:左移运算符可以有效地实现乘2的幂运算(如乘以2、4、8等),右移运算符可以有效地实现除2的幂运算(如除以2、4、8等)。
总结

左移运算符和右移运算符是C/C++语言中常用的二元运算符,用于移位操作。它们通常与位运算和乘除2的幂运算相关。熟练应用左移运算符和右移运算符,可以提高程序的性能和减少内存使用。