Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Anweisungen Bitoperatoren logische Operatoren

7.2 Auflösung der Beispiele für Bitoperatoren

Um das Ergebnis zu berechnen, schreiben wir die Konstanten als Binärzahl. i1 hat den Wert 10, binär 1010. Hier sollte noch kein Problem sein, da es nur eine einfache Zuweisung ist. Die Konstante 0x00FF lautet binär 0000000011111111. Damit ergibt die Verknüpfung:

1010 & 0000000011111111 = 1010 = 10

Das bitweise und kann also benutzt werden, um bestimmte Bits einer Variable so stehen zu lassen, wie sie gesetzt sind und um andere zu löschen, zu maskieren.

Anschließend verodern wir den Inhalt von i1, der nach der Zuweisung 10 ist mit der Konstante 172

i3 = i1 | 172 = 10 | 172 = 1010 | 10101100 = 10101110 = 174

In dem Ergebnis werden die Bits gesetzt, die in i3 oder i1 gesetzt sind. Wenn die Schnittmenge leer ist, entspricht dies einer Addition.

Jetzt werden alle Bits negiert und an i4 zugewiesen.

i4 = ~i3 = ~ 182 = ~ 11001010 = 00110101 = 110101 = 32+16+4+1 = 53

Haben sie auch dieses Ergebnis errechnet? Haben sie sich gewundert, daß das Programm zur Überprüfung ein anderes Ergebnis lieferte? Wenn i4 vom Datentyp int ist, belegt er 16 bzw. 32 Bit (je nach Compiler). Wir müssen natürlich für das Invertieren sämtliche Bits betrachten. Dies bedeutet für Turbo C i4 =  i3 = 1111111100110101. Wenn i4 eine vorzeichenbehaftete Zahl ist, dann ist die Zahl negativ wenn das höchste Bit gesetzt wird. Wie im Kapitel über Zahlensysteme ausführlich erklärt wird, wird im Zweierkomplemment die höchste Potenz negativ gezählt. Das ergibt für i4 = -2^15 + 2^14 + ... +2^2 + 2^0 = -175

Und zum Schluß noch exklusiv oder von i3 mit dem Wert 174 und i2 mit 10.

i5 = i3 ^ i2 = 10101110 ^ 1010 = 10100100 = 164

Die Schiebebefehle verknüpfen 2 Operanden

i6 = i1 << 2;
i7 = i6 >> 2;

Dies können wir ganz einfach prüfen, indem wir uns wieder die Bits hinschreiben. Für die Zuweisung an i6 werden sämtliche Bits aus i1 um 2 Stellen nach links verschoben. Überzählige Stellen fallen links heraus, rechts werden Nullen nachgeschoben. Damit ist i6 = 101000 = 40 und wenn wir alles wieder zurückschieben und links Nullen nachfüllen, kommen wir wieder auf das ursprüngliche Ergebnis, da keine gesetzten Bits weggefallen sind. Wer sich nochmals das Binärsystem anschaut wird erkennen, daß eine Verschiebung um 1 Stelle nach links einer Multiplikation mit 2 entspricht.


Home Anweisungen Bitoperatoren logische Operatoren


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum