[位運算符]
說明
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大神的英文原創作品 ~。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。