[位运算符]
说明
C++ 中的按位 NOT 运算符是波浪号 ~
。与 & 和 | 不同,按位 NOT 运算符应用于其右侧的单个操作数。按位 NOT 将每个位更改为其相反:0 变为 1,1 变为 0。
换句话说:
0 1 operand1 ----- 1 0 ~operand1
示例代码
int a = 103; // binary: 0000000001100111
int b = ~a; // binary: 1111111110011000 = -104
注意事项和警告
作为此操作的结果,您可能会惊讶地看到像 -104 这样的负数。这是因为int 变量中的最高位是so-called 符号位。如果最高位为 1,则该数字被解释为负数。这种正数和负数的编码称为二进制补码。有关详细信息,请参阅有关 two’s complement 的 Wikipedia 文章。
顺便说一句,有趣的是,对于任何整数 x,~x 与 -x - 1 相同。
有时,有符号整数表达式中的符号位会引起一些意外。
相关用法
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- 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 WiFi101 - WiFi.subnetMask()用法及代码示例
- Arduino TFT - PImage.width()用法及代码示例
- Arduino Arduino_APDS9960 - begin()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 ~。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。