Logischer Links‐ und Rechts‐Shift
Links‐ und Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
0 1 0 0 1 1 1 1 << 1 = 0 0 1 1 1 1 0 0 << 2 = 0 1 0 0 1 1 1 1 >> 1 = 1 1 1 1 0 0 0 0 >> 2 = Logischer Links‐Shift „b << x“:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Logischer Rechts‐Shift „b >> x“:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Was bedeutet Shift um i?
Links‐Shift:
Rechts‐Shift:
Links‐ und Rechts‐Rotation
Links‐ und Rechts‐Rotation am Beispiel von 8‐Bit‐Zahlen:
Links‐Rotation um 2 Stellen:
0 1 0 0 1 1 1 1 -->
Rechts‐Rotation um 2 Stellen:
1 1 1 1 0 0 0 1 -->
Links‐Rotation von b um x Stellen:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Rechts‐Rotation von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Addition, Subtraktion und negative Zahlen
Addition und Subtraktion von binären Zahlen
Beispiel C = A + B:
(Carry) 1 1 1 0 1 0 (A)
+ 1 0 1 0 1 1 (B) ---
= (C)
Beispiel C = A – B:
1 1 1 0 1 0 (A) - 1 0 1 0 1 1 (B)
(Carry) ---
= (C)
Darstellung von negativen binären Zahlen
Beobachtung für eine beliebige Binärzahl B, z.B. B=110010:
B
+ NOT(B)
---
= B + NOT(B) 1
+ (Carry)
---
Also gilt:
Bezeichnung: B = Einerkomplement, B+1 = Zweierkomplement
Quiz
Was ist die Dezimalzahl –7 als Binärzahl B in Zweierkomplement?
Zweierkomplement‐Binärzahl B=...1111011 als Dezimalzahl?
Subtraktion von binären Zahlen nochmal
Beispiel C = A – B:
1 1 1 0 1 0 (A) - 1 0 1 0 1 1 (B)
Bestimme Zweierkomplement zu B, also –B:
Also ist C:
(Carry) 1 1 1 0 1 0 (A)
+ ... 1 1 0 1 0 1 0 1 (-B) ---
= (C)
N‐Bit binäre Zahlen (signed)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…1111111111111111111111111111111111111111111111111101 = -3
MSB bestimmt das Vorzeichen. MSB=0 bedeutet nicht‐negativ, MSB=1 bedeutet negativ.
Beispiel: 16‐Bit
Beispiel vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = -128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = -127 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = -126
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = -3 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = -2 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = -1
Nicht‐vorzeichenbehaftete Zahlen (unsigned)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…0000000000000000000000000000000000001111111111111101 = 65533
MSB bestimmt das Vorzeichen nicht. Zahl ist immer nicht‐negativ.
Beispiel: 16‐Bit
Beispiel nicht‐vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = 128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = 129 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = 130
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = 253 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = 254 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = 255
Signed‐N‐Bit Binär in Dezimal umrechnen
Beispiel 8‐Bit‐Binärzahl B:
1 1 1 1 1 1 0 1 binär ist dezimal:
Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128):
1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt:
Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128):
1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt:
Sign‐Extension
Gegeben 6 und –3 in 16‐Bit‐Darstellung.
Wie sieht die 32‐Bit‐Binärdarstellung aus?
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 6 in 16‐Bit‐Binärdarstellung
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 –3 in 16‐Bit‐Binärdarstellung
6 in 32‐Bit‐Binärdarstellung?
–3 in 32‐Bit‐Binärdarstellung?
Erinnerung: n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…1111111111111111111111111111111111111111111111111101 = -3
Arithmetischer Rechts‐Shift
Arithmetischer Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
Arithmetischer Rechts‐Shift um 2 Stellen:
0 1 0 0 1 1 1 1 -->
Arithmetischer Rechts‐Shift um 2 Stellen:
1 1 1 1 0 0 0 1 -->
Arithmetischer Rechts‐Shift von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die neuen leeren Stellen werden mit dem Sign‐Bit aufgefüllt.
Overflow
Einschränkung auf n‐Bit kann einen Overflow bei Addition erzeugen:
(Carry) (A)
+ (B) ---
= (C) 0 1 0 1 1 0 1 0
0 1 1 0 0 1 1 1
Addition von negativer und nicht‐negativer Zahl. Overflow möglich?
Overflow erfordert, dass mindestens gilt:
Also Overflow in diesem Fall nicht möglich.
Overflow
Subtraktion von zwei negativen Zahlen x und y. Overflow möglich?
Der Fall „zwei nicht‐negativen Zahlen“ ist analog.
Also: Overflow in diesem Fall nicht möglich.
Zusammenfassung: Wann kann ein Overflow eintreten?
Operation Operand A Operand B Ergebnis welches Overflow anzeigt
A+B ≥ 0 ≥ 0 < 0
A+B < 0 < 0 ≥ 0
A–B ≥ 0 < 0 < 0
A–B < 0 ≥ 0 ≥ 0
Randbemerkung
Andere Darstellungsformen für negative Binärzahlen:
• Einerkomplement: Negativer Wert von B ist NOT(B)
• Sign‐and‐Magnitude: MSB ist das Vorzeichen. Rest ist der Wert.
• Biased‐Notation (Beispielsweise mit 0 auf 1000...0000):
0000 0000 0000 0000 0000 0000 0000 0000 = kleinster negativer Wert 0000 0000 0000 0000 0000 0000 0000 0001 = kleinster negativer Wert + 1
...
0111 1111 1111 1111 1111 1111 1111 1111 = ‐1 1000 0000 0000 0000 0000 0000 0000 0000 = 0 1000 0000 0000 0000 0000 0000 0000 0001 = 1
...
1111 1111 1111 1111 1111 1111 1111 1110 = größter positiver Wert ‐1 1111 1111 1111 1111 1111 1111 1111 1111 = größter positiver Wert
Logische Bausteine
Logische Bausteine
Kombinatorische Schaltungen
Gatter
Funktion Eingabe Symbol Ausgabe
AND
OR
NOT
Und‐Gatter
Oder‐Gatter
Inverter
Verallgemeinerung auf n Eingänge
Und‐Gatter mit n Eingängen A AND B
B
A B
A A
A OR B
NOT A
A1 A2
An
A1 A2
An
A1 AND A2 ... AND An
A1 OR A2 ... OR An
Oder‐Gatter mit n Eingängen
Kombinatorische Schaltungen
Jede boolesche Funktion (gegeben als logischer Ausdruck) wie z.B.
f(A,B) = NOT( NOT(A) OR B)
Lässt sich als kombinatorische Schaltung realisieren. Das Beispiel:
Inverter werden häufig abgekürzt dargestellt. Das Beispiel:
Wahrheitstabellen
Jede boolesche Funktion lässt mit einer Wahrheitstabelle darstellen.
Beispiel: f(A,B,C) = A AND NOT(B OR C) als Wahrheitstabelle
A B C B OR C NOT(B OR C) f(A,B,C)=A AND NOT(B OR C) 0 0 0
0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1