Der BCD zu Dezimal-codierten Dezimalzahlen history menue Letztmalig dran rumgefummelt: 27.08.19 15:03:40
Alle bitorientierten Codierungsverfahren beruhen auf dem binären HEX-Code als Basis. Die binär codierten Dezimalzahlen spielen allerdings ein wenig verrückt: So einfach eine glatte Zählung elektronisch zu bewerkstelligen ist, so komplex ist die direkte Umwandlung - vor allem dann, wenn die Bitbreite größer wird
Seit Jahren nutze ich das und kenn' ich das auch: die Dezimalzahlen in Binärmustern. Unterstützt durch Dezimalzähler - auch gar kein Problem in der elektronischen Darstellung. Wie ich aber anlässlich einer einfachen Schaltung bemerken muss, ist die direkte Logik zur Codierung dazu bei schon 8 Bit hochkomplex.
1. Technischer Hintergrund
2. Brute-Force-Methode: die Kanonische Normalform
3. Technische Realisierung
4. Praktischer Einsatz
5. Verwandte Themen
6. Übungsaufgaben zum White-Code
Quellen:

Coder

kaum beachtet - aber vorhanden: die BCD codierten Dezimalzahlen

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Wissen für Fortgeschrittene der Informatik

Informatik-Profi-Wissen


1. Technisch/theoretischer Hintergrund history menue scroll up
Der 8-4-2-1-Code ist ein dekadischer Code und dient zur Codierung der Dezimalziffern 0 ... 9. Er stimmt bis zur Zahl 9 mit dem Dualcode überein und ist der am häufigsten anzutreffende Code. Oft wird er kurz als BCD-Code bezeichnet (obwohl zu den BCDCodes noch andere dekadische Codes gehören - siehe Seite Codewandler).
Von den 16 möglichen Codewörtern bleiben 6 Codewörter ungenutzt; sie werden als Pseudotetraden bezeichnet. Manchmal nennt man den 8-4-2-1.-Code auch BCD- oder NBCD-Code (natürlich binär codierte Dezimalzahl) oder 1-2-4-8-Code.
Der 8-4-2-1-Code ist für das Rechnen mit Dualzahlen schlecht geeignet, weil Additionen mit einer Summe > 9 auf Pseudotetraden führen (und keinen Übertrag) und daher eine Korrekturvorschrift verlangen.
Mit dem Dualcode (d. h. bei der Wortcodierung) sind dagegen Additionen und Subtraktionen von Dualzahlen wieder leicht möglich, da sich der Übertrag zur nächsten Dualstelle ohne weiteres ergibt.
Die besondere Bedeutung des 8-4-2-1-Codes zeigt sich erst bei der Codierung und dem Umgang mit mehrstelligen Dezimalzahlen. Beispiel. 'Die Zahl 35 lässt sich auf zweierlei Weise wie folgt codieren. Fall A:
Die Codierung der ganzen Dezimalzahl auf einmal (sog. Wortcode) liefert nach dem Dualcode das 6-bit-Codewort H L L L H H.
Die getrennte Codierung der einzelnen Dezimalziffern 3 und 5 liefert die zwei Tetraden 3  LLHH und 5 LHLH, wobei der Tetrade LLHH die Wertigkeit 10 und der Tetrade LHLH die Wertigkeit 1 zukommt.
Der erste Fall benötigt die geringste Anzahl von Bits. Größere mehrstellige Dualzahlen ergeben aber sehr lange Codewörter, die bei der rechnerischen Handhabung unübersichtlich Dezimal- BCD-Code (BCD-binärcodierte Dezimalzahl)
wir haben aber hier lediglich eine technische Näherung zum 8-4-2-1 Code - logisch ist für 8 Bit die Sachlage wesentlich komplexer
wir stellen das mal für 4 Bit dar (das braucht aber keiner - relevant wird es erst für 8 Bit)
Hexadezimalzahl 101 100 HEX DEZ
23 22 21 20 23 22 21 20 23 22 21 20 20 20
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 1 1 1
0 0 1 0 0 0 0 0 0 0 1 0 2 2
0 0 1 1 0 0 0 0 0 0 1 1 3 3
0 1 0 0 0 0 0 0 0 1 0 0 4 4
0 1 0 1 0 0 0 0 0 1 0 1 5 5
0 1 1 0 0 0 0 0 0 1 1 0 6 6
0 1 1 1 0 0 0 0 0 1 1 1 7 7
1 0 0 0 0 0 0 0 1 0 0 0 8 8
1 0 0 1 0 0 0 0 1 0 0 1 9 9
1 0 1 0 0 0 0 1 0 0 0 0 A 10
1 0 1 1 0 0 0 1 0 0 0 1 B 11
1 1 0 0 0 0 0 1 0 0 1 0 C 12
1 1 0 1 0 0 0 1 0 0 1 1 D 13
1 1 1 0 0 0 0 1 0 1 0 0 E 14
1 1 1 1 0 0 0 1 0 1 0 1 F 15
bis zur 9 gar kein Problem - aber jenseits der Zehn müssen alle HEX-Zahlen in Bitmuster zur Dezimaldarstellung konvertiert werden - sie sind dann schon mal mindestens zweistellig

4 Bit von via kanonischer Normalform HEX in BCD-codierte Dezimazahlen konvertiert - ist noch leicht (ich hab' wegen zweier Fehler trotzdem 2 Tage daran zugebracht) ;-)

hier das ganze als ProfiLab 3.0-Datei zum Download

lustigerweise als Dekadenzähler installiert bekomme ich sofort die BCD-Dezeimalzahlen
wir stellen das nun einmal für 5 Bit dar (das braucht aber immer noch keiner - relevant wird es erst für 8 Bit)
Hexadezimalzahl - binary converted 102 101 100 HEX DEZ
128 64 32 16 8 4 2 1 2 1 8 4 2 1 8 4 2 1    
27 26 25 24 23 22 21 20 21 20 23 22 21 20 23 22 21 20    
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00H 000D
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 01H 001D
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 02H 002D
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 03H 003D
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 04H 004D
0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 05H 005D
0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 06H 006D
0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 07H 007D
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 08H 008D
0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 09H 009D
0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0AH 010D
0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0BH 011D
0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0CH 012D
0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0DH 013D
0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0EH 014D
0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 0 1 0FH 015D
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 10H 016D
0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 11H 017D
0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 12H 018D
0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 1 13H 019D
0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 14H 020D
0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 15H 021D
0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 16H 022D
0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 17H 023D
0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 18H 024D
0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 19H 025D
0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1AH 026D
0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 1BH 027D
0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1CH 028D
0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1DH 029D
0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1EH 030D
0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1FH 031D
0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 20H 032D
0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 21H 033D
0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 22H 034D
0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 23H 035D
0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 24H 036D
0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 1 25H 037D
0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 26H 038D
0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 27H 039D
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 28H 040D
0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 29H 041D
0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 2AH 042D
0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 2BH 043D
0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 2CH 044D
0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 2DH 045D
0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 2EH 046D
0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 2FH 047D
0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 30H 048D
0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 31H 049D
0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 32H 050D
0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 33H 051D
0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 34H 052D
0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 1 1 35H 053D
0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 36H 054D
0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 37H 055D
0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 0 38H 056D
0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 39H 057D
0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 3AH 058D
0 0 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 3BH 059D
0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 3CH 060D
0 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 3DH 061D
0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 3EH 062D
0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 3FH 063D
0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 40H 064D
0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 41H 065D
0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 42H 066D
0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 43H 067D
0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 44H 068D
0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 45H 069D
0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 46H 070D
0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 47H 071D
0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 48H 072D
0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 1 49H 073D
0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 4AH 074D
0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 4BH 075D
0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 0 4CH 076D
0 1 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 4DH 077D
0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 4EH 078D
0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 4FH 079D
0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 50H 080D
0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 51H 081D
0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 52H 082D
0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 53H 083D
0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 54H 084D
0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 55H 085D
0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 56H 086D
0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 1 57H 087D
0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 58H 088D
0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 59H 089D
0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 5AH 090D
0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 5BH 091D
0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 5CH 092D
0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 5DH 093D
0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 5EH 094D
0 1 0 1 1 1 1 1 0 0 1 0 0 1 0 1 0 1 5FH 095D
0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 60H 096D
0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 61H 097D
0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 62H 098D
0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 63H 099D
0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 64H 100D
0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 65H 101D
0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 66H 102D
0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 1 67H 103D
0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 68H 104D
0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 69H 105D
0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 6AH 106D
0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 6BH 107D
0 1 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 6CH 108D
0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 1 6DH 109D
0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 6EH 110D
0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 6FH 111D
0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 70H 112D
0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 71H 113D
0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 72H 114D
0 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 73H 115D
0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 74H 116D
0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 75H 117D
0 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 76H 118D
0 1 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 77H 119D
0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 78H 120D
0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 79H 121D
0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 7AH 122D
0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 7BH 123D
0 1 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 7CH 124D
0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 7DH 125D
0 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 0 7EH 126D
0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 7FH 127D
1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 80H 128D
1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 81H 129D
1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 82H 130D
1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 83H 131D
1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 84H 132D
1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 85H 133D
1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 86H 134D
1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 87H 135D
1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 88H 136D
1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 89H 137D
1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 8AH 138D
1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 8BH 139D
1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 8CH 140D
1 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 8DH 141D
1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 8EH 142D
1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 8FH 143D
                                       

2. Brute-Force-Methode: die Kanonische Normalform history menue scroll up
Hierzu werden, wie gewohnt, alle Muster (das sind aber leider 256) notiert und für die jeweiligen zwölf Ausgänge die entsprechenden Bitkombinationen festgelegt. Nachfolgend werden die einzelnen Ausgangsbits getrennt behandelt und für ihre logischen 1-Ausgänge die Logiken entwickelt.

Brute-Force-Angriffe

   

grafische Veranschaulichung der Bitzuordnungen für die ersten 256 Hexadezimalzahlen

grafische Veranschaulichung der Bitzuordnungen für die ersten 256 Hexadezimalzahlen


3. Technische Realisierung history menue scroll up
Die Kanonisch konjunktive Normalform liefert Schaltfunktionen f, wobei an jedem Minterm eine Schaltung S liegt, die für den Ausgang 0 erzeugt. Sie wird genau dann eingesetzt, wenn die Anzahl der logischen Nullen an einem Eingang größer, als die Anzahl der logischen Einsen ist.
Nur alle die Funktionen, für die y=f(x0 ... xn) den Wert 0 führt, sind für die weitere Analyse von Belang
 

4. Praktischer Einsatz history menue scroll up

 
 
 


5. Verwandte Themen history menue scroll up

Hat schon diese Site viel mit Logik zu tun, so kann's auf einer der folgenden damit noch happiger werden. Mich beeindruckt dabei immer wieder, wie man unter dem unwissenden Volk (das bist Du, der Du erarbeitend bis zu diesem Punkte gelangt bist, schon lange nicht mehr!) mit den Wörtchen "und", "oder" und "nicht" evtl. gespickt mit den Regeln der Relationenalgebra Verwirrung stiften kann. Wer's nicht glaubt, löst die Aufgaben unter dem dritten Bleisitft.

Binäre Umcodierer

der 1 aus 10-Code

der 2 aus 5-Code

der Exzess-3- oder auch Stibitz-Code

der Gray-Code

der Aiken-Code

Biquinär-Code

der Johnson-Code auch Libaw-Craig-Code

Baudot-Code

 

der Huffman-Code

LZW-Kompression

 


6. Übungsaufgaben zu den Kanonischen Normalform history menue scroll up

Alle der nachfolgenden Aufgaben beziehen irgendwie die logische Zuordnung und/oder kanonische Normalformen in die Lösungsstrategien ein (wenngleich das auch prinzipiell anders geht.
Zeile

x2

x1 x0 y1 y0
1. 0 0 0 1 0
2. 0 0 1 1 1
3. 0 1 0 0 1
4. 0 1 1 0 0
5. 1 0 0 1 1
6. 1 0 1 0 0
7. 1 1 0 1 0
8. 1 1 1 0 1
komplexes Lösungsmuster

Logiktabelle mit 5 Eingängen und 4 Ausgängen

Sauschwere Logiktabelle mit 5 Eingängen und 4 Ausgängen

   
       
In den gegebenen Aufgaben verstehen sich die nummerierten Stationen als binär am Eingang des jeweiligen Haltpunktes kodierte Erfassungszentralen. Ihr Logiksystem untersucht den jeweiligen Fahrschein, welcher die ebenfalls binär codierten Streckendaten auswertet, ob der Fahrschein an der Station gültig ist, oder nicht!
 

Aufgabe 4 entweder für alle Haltepunkte oder für genau einen definierten

Download des Originalplanes im DidCAD 4.0-Format

   



zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 8. Februar 2008

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus (das haben wir schon den Salat - und von dem weiß ich!) nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)