當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Arduino ^=用法及代碼示例

[複合運算符]

說明

複合按位異或運算符^= 通常與變量和常量一起使用,以切換(反轉)變量中的特定位。

Bitwise XOR ^ 運算符的回顧:

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  1  1  0    (operand1 ^ operand2) - returned result

用法

x ^= y; // equivalent to x = x ^ y;

參數

x: 多變的。允許的數據類型:char,int,long.
y: 變量或常量。允許的數據類型:char,int,long.

示例代碼

"bitwise XORed" 為 0 的位保持不變。所以如果 myByte 是一個字節變量,

myByte ^ 0b00000000 = myByte;

"bitwise XORed" 為 1 的位被切換,因此:

myByte ^ 0b11111111 = ~myByte;

注意事項和警告

因為我們在按位運算符中處理位 - 使用帶有常量的二進製格式化程序很方便。這些數字在其他表示中仍然是相同的值,隻是不太容易理解。此外,為清楚起見,顯示了 0b00000000,但任何數字格式的零都是零。

因此 - 要切換變量的位 0 和 1,同時保持變量的其餘部分不變,請使用複合按位異或運算符 (^=) 和常量 0b00000011

1  0  1  0  1  0  1  0    variable
0  0  0  0  0  0  1  1    mask
----------------------
1  0  1  0  1  0  0  1
bits unchanged
                 bits toggled

這是用符號 x 替換變量位的相同表示。 ~x 表示 x 的補碼。

x  x  x  x  x  x  x  x    variable
0  0  0  0  0  0  1  1    mask
----------------------
x  x  x  x  x  x ~x ~x
bits unchanged
                 bits set

因此,如果:

myByte = 0b10101010;
myByte ^= 0b00000011 == 0b10101001;

相關用法


注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 ^=。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。