Bit­ma­ni­pu­la­ti­on

Lese­zeit: 2 Minu­ten

Bei­spiel ➨ Schie­be­re­gis­ter

Im binä­ren Sys­tem wer­den ganz­zah­li­ge Wer­te durch eine Fol­ge von 0 und 1 dar­ge­stellt.

void setup()
{
  byte Zahl = 255;
  Serial.begin(9600);
 
  Serial.println("\tDezimal: " + String(Zahl, DEC));
  Serial.println("-------------------------------------");
  Serial.println("shift links:");
  Serial.println("-------------------------------------");
 
  // shift links
  for (int i = 7; i > 0; i--)
  {
    Zahl = Zahl << 1;
    Serial.print(Zahl, BIN);
 
    // Anzeige: Dezimal, Binär 
    Serial.println("\tDezimal: " + String(Zahl, DEC));
  }
 
  Serial.println("-------------------------------------");
 
  // Neustart
  Zahl = 255;
  Serial.print(Zahl, BIN);
  Serial.println("\tDezimal: " + String(Zahl, DEC));
  Serial.println("shift rechts: zur Verdeutlichung Anzahl 0 erg\u00e4nzt");
  Serial.println("-------------------------------------");
 
  // shift rechts
  for (int i = 0; i < 7; i++)  
  {  
    Zahl = Zahl >> 1;
    Serial.print(Zahl, BIN); 
    Serial.print("\t"); 

    // zur Verdeutlichung nicht angezeigt 0 ergänzen 
    for (int j = 0; j <= i; j++) 
    { 
      Serial.print("0"); 
    } 
    Serial.print(Zahl, BIN);
  
    // Anzeige: Dezimal, Binär 
    Serial.println("\tDezimal: " + String(Zahl, DEC));
  }

  // ~ -> Bits umkehren
  Zahl = B11111100;
  Serial.println("-------------------------------------");  
  Serial.println("Bits mit ~ umkehren");
  Serial.print(Zahl, BIN);
  Serial.println("\tDezimal: " + String(Zahl, DEC));
  Zahl = ~ Zahl;
  Serial.print(Zahl, BIN);
  Serial.println("\tDezimal: " + String(Zahl, DEC));
}

void loop()
{
  // bleibt leer, Programm läuft nur einmal
}

So sieht es aus:


Letzte Aktualisierung: 12. Okt 2020 @ 9:47