Arduino 中的按位非


與邏輯非不同,邏輯非會反轉表示式的真值,按位非適用於數字的每一位,並反轉其值(0 到 1,1 到 0)。運算子是 ~。

因此,語法為 ~a,其中 a 是該運算子必須應用到的數字。

請注意,數字表示形式中的所有前導 0 也都將轉換為 1。例如,如果你的電路板使用 16 位來表示整數,則 10 將如下所示

0000000000001010
10
1111111111110101
~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:
}

輸出

序列埠監視器輸出為 −

如您所見,輸出與預期相同。

更新於: 2021 年 5 月 31 日

912 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.