[位运算符]
说明
左移运算符<<
使左操作数的位左移右操作数指定的位置数。
用法
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 <用法及代码示例
- Arduino <=用法及代码示例
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
- Arduino MKRGSM - sms.read()用法及代码示例
- Arduino MKRNB - getCurrentCarrier()用法及代码示例
- Arduino Scheduler - Scheduler.startLoop()用法及代码示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代码示例
- Arduino MKRWAN - available()用法及代码示例
- Arduino ArduinoBLE - BLE.poll()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.hasDescriptor()用法及代码示例
- Arduino Ethernet - EthernetUDP.parsePacket()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 <<。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。