g

Dependencies:   mbed

Committer:
fatima365
Date:
Thu Dec 05 18:57:15 2019 +0000
Revision:
1:210e74bbbe34
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fatima365 1:210e74bbbe34 1 // Bitoperationen in C
fatima365 1:210e74bbbe34 2 // & | ^ << >>
fatima365 1:210e74bbbe34 3
fatima365 1:210e74bbbe34 4 // Logische Verknüpfungs-Operatoren
fatima365 1:210e74bbbe34 5 // && || !
fatima365 1:210e74bbbe34 6
fatima365 1:210e74bbbe34 7 a = 3; // dez
fatima365 1:210e74bbbe34 8 a = 0x3;
fatima365 1:210e74bbbe34 9 a = 0xA;
fatima365 1:210e74bbbe34 10
fatima365 1:210e74bbbe34 11 // Der Bitschiebe-Befehl in C/C++
fatima365 1:210e74bbbe34 12
fatima365 1:210e74bbbe34 13 int a;
fatima365 1:210e74bbbe34 14
fatima365 1:210e74bbbe34 15 a = B#0001; // in a steht Binär 0001
fatima365 1:210e74bbbe34 16
fatima365 1:210e74bbbe34 17 a = a << 1; // in a steht jetzt B#0010
fatima365 1:210e74bbbe34 18 a = a << 1; // in a steht jetzt B#0100
fatima365 1:210e74bbbe34 19
fatima365 1:210e74bbbe34 20 a = a >> 2; // in a steht jetzt B#0001
fatima365 1:210e74bbbe34 21 a = a >> 1; // in a steht jetzt B#0000
fatima365 1:210e74bbbe34 22
fatima365 1:210e74bbbe34 23
fatima365 1:210e74bbbe34 24 // Bitwise OR
fatima365 1:210e74bbbe34 25 B#1001 | B#0010 = B#1011
fatima365 1:210e74bbbe34 26
fatima365 1:210e74bbbe34 27
fatima365 1:210e74bbbe34 28 // Bits in einem Byte mit Bitwise-And abfragen
fatima365 1:210e74bbbe34 29
fatima365 1:210e74bbbe34 30 B#1010 & B#0101 = B#0000
fatima365 1:210e74bbbe34 31
fatima365 1:210e74bbbe34 32 B#1010 & B#1000 = B#1000
fatima365 1:210e74bbbe34 33
fatima365 1:210e74bbbe34 34 // !!gezieltes!! abfragen ob ein Bit in einem Byte gesetzt ist
fatima365 1:210e74bbbe34 35
fatima365 1:210e74bbbe34 36 2^3 2^2 2^1 2^0
fatima365 1:210e74bbbe34 37 B# 0 0 0 0;
fatima365 1:210e74bbbe34 38
fatima365 1:210e74bbbe34 39 int btn;
fatima365 1:210e74bbbe34 40
fatima365 1:210e74bbbe34 41 if( btn & 0001 ) B#xxxx & B#0001
fatima365 1:210e74bbbe34 42 printf("Bit0 ist gesetzt");
fatima365 1:210e74bbbe34 43
fatima365 1:210e74bbbe34 44 if( btn & 2 ) B#xxxx & B#0010
fatima365 1:210e74bbbe34 45 printf("Bit1 ist gesetzt");
fatima365 1:210e74bbbe34 46
fatima365 1:210e74bbbe34 47 if( btn & 4 )
fatima365 1:210e74bbbe34 48 printf("Bit2 ist gesetzt");
fatima365 1:210e74bbbe34 49
fatima365 1:210e74bbbe34 50 if( btn & 8 )
fatima365 1:210e74bbbe34 51 printf("Bit3 ist gesetzt");
fatima365 1:210e74bbbe34 52
fatima365 1:210e74bbbe34 53
fatima365 1:210e74bbbe34 54 // Mit dem Bitwise-OR Bits in einem Byte setzen
fatima365 1:210e74bbbe34 55 // ohne die schon gesetzen Bits zu zerstören
fatima365 1:210e74bbbe34 56
fatima365 1:210e74bbbe34 57 int leds;
fatima365 1:210e74bbbe34 58
fatima365 1:210e74bbbe34 59 leds = B#0001; // Bit0 ist gesetzt
fatima365 1:210e74bbbe34 60
fatima365 1:210e74bbbe34 61 leds = B#0010; // Bit1 ist gesetzt aber Bit0 ist leider wieder gelöscht
fatima365 1:210e74bbbe34 62
fatima365 1:210e74bbbe34 63 // Die Lösung ist, daß man Bits dazuverodert
fatima365 1:210e74bbbe34 64 leds = leds | B#0010; // leds ist jetzt B#0011;
fatima365 1:210e74bbbe34 65
fatima365 1:210e74bbbe34 66
fatima365 1:210e74bbbe34 67
fatima365 1:210e74bbbe34 68 // Logische operatoren
fatima365 1:210e74bbbe34 69
fatima365 1:210e74bbbe34 70 int a = 1;
fatima365 1:210e74bbbe34 71 int b = 1;
fatima365 1:210e74bbbe34 72
fatima365 1:210e74bbbe34 73 int c = ( a && b );
fatima365 1:210e74bbbe34 74
fatima365 1:210e74bbbe34 75 int d = 5; // B#0101