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


Arduino <<用法及代码示例


[位运算符]

说明

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

用法

variable << number_of_bits;

参数

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

示例代码

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

注意事项和警告

当您将值 x 移动 y 位 (x << y) 时,x 中最左边的 y 位将丢失,字面意思是移出不存在:

int x = 5;  // binary: 0000000000000101
int y = 14;
int result = x << y;  // binary: 0100000000000000 - the first 1 in 101 was discarded

如果您确定一个值中的任何一个都没有被转移到遗忘中,那么考虑 left-shift 运算符的一种简单方法是,它将左操作数乘以 2 的右操作数幂。例如,要生成 2 的幂,可以使用以下表达式:

   Operation  Result
   ---------  ------
    1 <<  0      1
    1 <<  1      2
    1 <<  2      4
    1 <<  3      8
    ...
    1 <<  8    256
    1 <<  9    512
    1 << 10   1024
    ...

以下示例可用于将接收到的字节的值打印到串行监视器,使用左移运算符将字节从底部(LSB)移动到顶部(MSB),并打印出其二进制值:

// Prints out Binary value (1 or 0) of byte
void printOut1(int c) {
  for (int bits = 7; bits > -1; bits--) {
    // Compare bits 7-0 in byte
    if (c & (1 << bits)) {
      Serial.print("1");
    }
    else {
      Serial.print("0");
    }
  }
}

相关用法


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