AUFGABEN

Fork of 5ABELI_BAJRAKTAREVIC by Riad_ Bajraktarevic

Bitoperationen

Table of Contents

  1. 06_12_19

06_12_19

// Bitoperationen in C
//   &  |  ^  <<  >>

// Logische Verknüpfungs-Operatoren
// && || ! 

a = 3; // dez  
a = 0x3;
a = 0xA;

// Der Bitschiebe-Befehl in C/C++

int  a;

a = B#0001;  // in a steht Binär 0001

a = a << 1;  // in a steht jetzt B#0010
a = a << 1;  // in a steht jetzt B#0100

a = a >> 2;  // in a steht jetzt B#0001
a = a >> 1;  // in a steht jetzt B#0000


// Bitwise OR
B#1001 | B#0010 = B#1011       


// Bits in einem Byte mit Bitwise-And abfragen

B#1010 & B#0101 = B#0000

B#1010 & B#1000 = B#1000

// !!gezieltes!! abfragen ob ein Bit in einem Byte gesetzt ist

  2^3    2^2  2^1  2^0
B#  0    0    0    0;

int btn;

if( btn & 0001 )  B#xxxx & B#0001
  printf("Bit0 ist gesetzt");

if( btn & 2 ) B#xxxx & B#0010
  printf("Bit1 ist gesetzt");

if( btn & 4 )
  printf("Bit2 ist gesetzt");

if( btn & 8 )
  printf("Bit3 ist gesetzt");


// Mit dem Bitwise-OR Bits in einem Byte setzen 
// ohne die schon gesetzen Bits zu zerstören

int leds;

leds = B#0001; // Bit0 ist gesetzt

leds = B#0010; // Bit1 ist gesetzt aber Bit0 ist leider wieder gelöscht

// Die Lösung ist, daß man Bits dazuverodert
leds = leds | B#0010; // leds ist jetzt B#0011;



// Logische operatoren

int a = 1;
int b = 1;

int c = ( a && b );

int d = 5; // B#0101

All wikipages