当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Arduino >>用法及代码示例


[位运算符]

说明

右移运算符>> 使左操作数的位右移右操作数指定的位置数。

用法

variable >> number_of_bits;

参数

variable:允许的数据类型:byte,int,long.
number_of_bits: < = 32 的数字。允许的数据类型:int.

示例代码

int a = 40;     // binary: 0000000000101000
int b = a >> 3; // binary: 0000000000000101, or 5 in decimal

注意事项和警告

当您将 x 右移 y 位 (x >> y) 并且 x 中的最高位为 1 时,行为取决于 x 的确切数据类型。如果 x 是 int 类型,则最高位是符号位,确定 x 是否为负,正如我们上面所讨论的。在这种情况下,出于深奥的历史原因,符号位被复制到低位:

int x = -16;  // binary: 1111111111110000
int y = 3;
int result = x >> y;  // binary: 1111111111111110

这种称为符号扩展的行为通常不是您想要的行为。相反,您可能希望零从左侧移入。事实证明,无符号 int 表达式的右移规则是不同的,因此您可以使用类型转换来抑制从左侧复制的内容:

int x = -16;  // binary: 1111111111110000
int y = 3;
int result = (unsigned int)x >> y;  // binary: 0001111111111110

如果您小心避免符号扩展,您可以使用 right-shift 运算符 >> 作为除以 2 的幂的方法。例如:

int x = 1000;
int y = x >> 3; // integer division of 1000 by 8, causing y = 125.

相关用法


注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 >>。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。