[位运算符]
说明
C++ 中的按位与运算符是一个与号 &
,用于两个其他整数表达式之间。按位与对周围表达式的每个位位置进行独立运算,根据此规则:如果两个输入位均为 1,则结果输出为 1,否则输出为 0。
另一种表达方式是:
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 0 0 1 (operand1 & operand2) - returned result
在 Arduino 中,int 类型是 16 位值,因此在两个 int 表达式之间使用 & 会导致同时发生 16 次 AND 操作。
示例代码
在如下代码片段中:
int a = 92; // in binary: 0000000001011100
int b = 101; // in binary: 0000000001100101
int c = a & b; // result: 0000000001000100, or 68 in decimal.
a 和 b 中的 16 位中的每一个都通过按位与处理,所有 16 位结果都存储在 c 中,产生二进制值 01000100,即十进制 68。
按位与最常见的用途之一是从整数值中选择特定位(或位),通常称为屏蔽。请参阅下面的示例(特定于 AVR 架构)。
PORTD = PORTD & 0b00000011; // clear out bits 2 - 7, leave pins PD0 and PD1 untouched (xx & 11 == xx)
相关用法
- 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大神的英文原创作品 &。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。