Bit operators C Cpp

True table for bit operators

A B NOT
~A
AND
A & B
OR
A | B
NOR
~(A | B)
NAND
~(A & B)
XOR
A ^ B
00100110
01101011
10001011
11011000

Operator AND &

Zwraca 1, jeśli obie wartości wynoszą 1.

Operator OR |

Zwraca 1, jeśli choć jedna z wartości wynosi 1.

Operator NAND ~&

Operator NAND ~(A&B) zwraca 1, jeśli przynajmniej jeden z bitów wejściowych wynosi 0.

Ponieważ NAND jest bramą uniwersalną, można z niej zbudować każdą inną bramę logiczną.


void setup() {
  Serial.begin(115200);
  byte A = 0b11001100;
  byte B = 0b01101010;

  byte result = ~(A & B); 

  Serial.println(result,BIN);
  // 10110111
}

void loop() {}

Operator XOR ^

Zwraca wartość 1 wtedy, gdy wartości porównywanych bitów w łańcuchach binarnych są różne. [^ kareta]

void setup() {
  Serial.begin(115200);

  byte val1 = 0b11011101;
  byte val2 = 0b01010011;
  byte result = val1 ^ val2;

  Serial.println(result,BIN);
  // 10001110
}

void loop(){

}

int ledPin = 8;
int ledState = 0;

void setup() {
    pinMode(ledPin, OUTPUT);
}

void loop() {
    ledState ^= 1;
    digitalWrite(ledPin, ledState);
    delay(500);
}


int flag = 0b00000000;

void setup() {
  DDRB = 0b11111111;
}

void loop(){
  flag ^= 0b00000101;
  PORTB = flag;
  delay(500);
}

Leave a Comment

Scroll to Top