C 语言移位运算符

17 Mar 2025 | 5 分钟阅读

本节将讨论 C 语言中的按位移位运算符。按位移位运算符用于根据程序的需要将二进制位向左或向右移位。

Shift Operators in C

根据位的移位位置,移位运算符分为两种类型。

  1. 左移运算符
  2. 右移运算符

左移运算符

左移运算符是一种按位移位运算符,用于对二进制位执行操作。它是一个二元运算符,需要两个操作数来将位移位或移动到左侧,并在移位后在右侧创建的空隙处添加零。

语法

在上面的语法中,var_name 表示要对其执行左移(<<)操作以将二进制位移到左侧的整数变量名。no_of_position 变量表示要放置或移到左侧的位数。换句话说,左移运算符将第一个操作数的二进制位向左移动第二个操作数定义的位数。

例如,整数变量 num 的值为 22,其二进制形式为 10110。现在我们使用左移运算符将二进制位左移 2 位,即 num = num << 2 等同于 num = num * (2^2)。num 的新值是 22 * (2 ^ 2) = 88,其二进制形式为 1011000。

示例 1:演示 C 语言中左移运算符用法的程序

输出

Enter a positive number: 25
After shifting the binary bits to the left side.
The new value of the variable num = 100 

示例 2:演示在 C 的 unsigned int 数据类型中使用左移运算符的程序

输出

After shifting the binary bits to the left side.
The new value of the unsigned variable num = 1020 

示例 3:从用户输入正数以执行左移运算符的程序

输出

Enter a positive number: 40
No. of binary bits shifted to the left side: 4
After shifting the bits to the left side.
The new value of the num = 640   

在上面的示例中,用户定义的正数 40 的二进制位是 101000。之后,我们将 4 作为向左移位二进制位的数字。然后,左移运算符将 4 个二进制位向左移位,然后在右侧创建的空隙处填充或添加 4 个零,从而得到二进制值 1010000000,这相当于十进制数 640。

右移运算符

右移运算符是一种按位移位运算符,用于将位向右移动,并用双(>>)箭头符号表示。与左移运算符一样,右移运算符也需要两个操作数将位向右移动,然后在移位后在左侧创建的空隙处插入零。

语法

在上面的语法中,var_name 表示要对其执行右移(>>)操作以将二进制位移到右侧的整数变量。no_of_position 变量表示要放置或移到右侧的位数。换句话说,右移运算符将第一个操作数的二进制位向右移动第二个操作数定义的总位数。

示例 1:演示 C 语言中右移运算符用法的程序

输出

Enter a positive number: 25

After shifting the binary bits to the right side.
The new value of the variable num = 6 

示例 2:演示在 C 的 unsigned int 数据类型中使用右移运算符的程序

输出

After shifting the binary bits to the right side.
The new value of the unsigned variable num = 63 

示例 3:从用户输入正数以执行右移运算符的程序

输出

Enter a positive number: 40
No. of binary bits shifted to the right side: 4
After using the right shift operator to shift the bits to the right. 
The new value of the num = 2