Arduino 中的按位非
與邏輯非不同,邏輯非會反轉表示式的真值,按位非適用於數字的每一位,並反轉其值(0 到 1,1 到 0)。運算子是 ~。
因此,語法為 ~a,其中 a 是該運算子必須應用到的數字。
請注意,數字表示形式中的所有前導 0 也都將轉換為 1。例如,如果你的電路板使用 16 位來表示整數,則 10 將如下所示
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 10 | |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | ~10=-11 |
正如你所見,10 的每一位都已反轉。根據二進位制補碼,該數字對應於 -11。你可以使用該網站快速將十進位制數字轉換成二進位制補碼,反之亦然 https://www.exploringbinary.com/twos-complement-converter/.
你可以瞭解更多關於二進位制補碼的資訊 &minnus; https://tutorialspoint.tw/two-scomplement
示例
讓我們在序列埠監視器上驗證這一點。程式碼如下 −
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println();
int a = 10;
Serial.println(~a);
}
void loop() {
// put your main code here, to run repeatedly:
}輸出
序列埠監視器輸出為 −

如您所見,輸出與預期相同。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP