1.2.2 Zahlen

1.2.2.1 Dezimalziffern

Um die zehn Ziffern des Dezimalsystems binär zu codieren, braucht man (mindestens) 4 Bit; im BCD-Code oder 8-4-2-1–Code wird nun jede Dezimalziffer durch die Bitkombination dargestellt, die im Stellenwertsystem der Basis 2 den entsprechenden Wert hat:

∑_{i=0}^{3} m_{i} · 2^{i}, m_{i} ∈ {0, 1}

In einem Byte kann man dann zwei Dezimalstellen, in 4 Byte (32 Bit) 8 Dezi-

\begin{matrix}Wert & m_{3} & m_{2} & m_{1} & m_{0} \\ 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 1 \\ 2 & 0 & 0 & 1 & 0 \\ 3 & 0 & 0 & 1 & 1 \\ 4 & 0 & 1 & 0 & 0 \\ 5 & 0 & 1 & 0 & 1 \\ 6 & 0 & 1 & 1 & 0 \\ 7 & 0 & 1 & 1 & 1 \\ 8 & 1 & 0 & 0 & 0 \\ 9 & 1 & 0 & 0 & 1 \end{matrix}

Tabelle 1.22: Zifferndarstellung im BCD-Code

malstellen bzw. in 8 Byte (64 Bit) 16 Dezimalstellen unterbringen. Abgesehen davon, daß in 4 Byte im BCD-Code die Zahlen

00.000.000 … 99.999.999,

im Dualsystem jedoch die (im Binärstellenwertsystem zu interpretierenden Zahlen)

0 … ∑_{i=0}^{31} 1 · 2^{i},

also

0 … 2^{32} − 1 = 0 … 4.294.967.295

codiert werden können, ist auch das Rechnen mit BCD-codierten Zahlen aufwendiger: es benötigt mehr Schaltfunktionen / Gatter:

9_{10}  1001_{2}
+ 3_{10}  + 0011_{2}
12_{10}  1100 ← kein BCD-Code, deshalb Korrektur um 6
+ 0110
0001 0010

Ziffernaddition: 1 Addition, 1 Vergleich > 9 und ggf. 1 weitere Addition

Schließlich gibt es Binärmuster, die nicht als BCD-codierte Zahl auftreten können, die Abbildung ist also nicht bijektiv. Aus Gründen der besseren Ökonomie benutzen moderne Computer deshalb fast ausschließlich binär codierte Zahlen.

1.2.2.2 Ein Ausflug in die technische Informatik

Zu Informationen der Halbleiter-Physik vergleiche etwa:

         http://jas.eng.buffalo.edu/applets/education/fab/NMOS/nmos.html,
         http://www.gel.ulaval.ca/ chabot01/MOSFET/English.html,
         http://jas.eng.buffalo.edu/applets/education/index2.html.

Seien x_{i}, y_{i}, z_{i}, c_{i}, c_{i+1} ∈ {0, 1}. Für vorgegebene c_{i}, x_{i}, y_{i} ist dann

z_{i} = x_{i} ⊕ y_{i} ⊕ c_{i}

das Ergebnisbit und

c_{i+1} = x_{i} · y_{i} ∨ x_{i} · c_{i} ∨ y_{i} · c_{i}

der Übertrag.

[figure: AND · ∧; OR + ∨; NOT − ¬; XOR ⊕]

Abbildung 1.13: Gattersymbole

[figure: x̄_{i}; c̄_{i}; y_{i}; x̄_{i}; c_{i}; ȳ_{i}; x_{i}; c̄_{i}; ȳ_{i}; x_{i}; c_{i}; y_{i}; z_{i}; x_{i}; y_{i}; x_{i}; c_{i}; y_{i}; c_{i}; c_{i+1}; +; x_{i}; y_{i}; c_{i}; c_{i+1}; z_{i}]

Abbildung 1.14: Der Volladdierer für 1 Bit (binär)

Allgemein gilt:

1. Jede Wertetabelle ist durch vollständige Beschaltung (ODER-Normalform) aller Wahrheitskombinationen realisierbar.

2. Es können durch Minimierung Gatter eingespart werden: KV-Diagramme (vgl. Übungen) oder Regeln der Schaltalgebra

Einen (experimentellen) Überblick zur Kombination von NOT-, AND- und OR-Gattern erhält man etwa mittels

         http://math.hws.edu/TMCM/java/xLogicCircuits/index.html.

Bauen Sie etwa die obige Schaltung zur Übertragsberechung beim Einbit-Addierer mit Übertrageingang nach, und testen Sie.

[figure: +; +; +; +; +; +; +; z_{i,3}; z_{i,2}; z_{i,1}; z_{i,0}; c_{i+1}; c_{i}; x_{i,3}; y_{i,3}; x_{i,2}; y_{i,2}; x_{i,1}; y_{i,1}; x_{i,0}; y_{i,0}]

Abbildung 1.15: Der 4-Bit BCD-Addierer: es werden 7 statt 4 Volladdierern und 3 Gatter benötigt.

Der BCD-Addierer ist aufwendiger:

Gatter

[figure: Norm; Europa; USA; AND; NOR; NOT; OR; (XOR); Antivalenz; &; ≥ 1; 1; ≥ 1; = 1; ≢]

und ihre Realisierungen: