Binär codierte Dezimalzahl

In der Computerwissenschaft und den elektronischen Systemen ist binär codierte Dezimalzahl (BCD) eine Digitalverschlüsselungsmethode für Zahlen mit der dezimalen Notation mit jeder dezimalen durch seine eigene binäre Folge vertretenen Ziffer. In BCD wird eine Ziffer gewöhnlich durch vier Bit vertreten, die im Allgemeinen die dezimale Reihe 0 bis 9 vertreten. Andere Bit-Muster werden manchmal für ein Zeichen oder für andere Anzeigen (z.B, Fehler oder Überschwemmung) verwendet. Unkomprimiert (oder in Zonen aufgeteilt) verbraucht BCD ein Byte für jede vertretene Ziffer, wohingegen komprimiert (oder gepackt) BCD normalerweise zwei Ziffern in einem einzelnen Byte durch das Ausnutzen die Tatsache trägt, dass vier Bit die volle Ziffer-Reihe vertreten werden.

Der Hauptvorteil von BCD ist Bequemlichkeit der Konvertierung zwischen der Maschine - und den menschlich-lesbaren Formaten, sowie einer genaueren Maschinenformat-Darstellung von dezimalen Mengen. Verglichen mit typischen binären Formaten sind die Hauptnachteile von BCD eine kleine Zunahme in der Kompliziertheit der Stromkreise musste grundlegende mathematische Operationen und weniger effizienten Gebrauch von Lagerungsmöglichkeiten durchführen.

BCD wurde in vielen frühen dezimalen Computern verwendet. Obwohl BCD nicht so weit verwendet wird wie in der Vergangenheit, sind dezimaler fester Punkt und Schwimmpunkt-Formate noch wichtig und setzen fort, in der finanziellen, kommerziellen und industriellen Computerwissenschaft verwendet zu werden, wo feine Konvertierung und Rundungsfehler, die zum Schwimmpunkt binäre Darstellungen innewohnend sind, nicht geduldet werden können.

Grundlagen

Wie beschrieben, in der Einführung nutzt BCD die Tatsache aus, dass irgendwelche dezimale Ziffer durch ein Vier-Bit-Muster vertreten werden kann:

Da die meisten Computer Daten in 8-Bit-Bytes versorgen, ist es möglich, eine der folgenden Methoden zu verwenden, eine BCD Zahl zu verschlüsseln:

  • Unkomprimiert: Jede Ziffer wird in ein Byte mit vier Bit verschlüsselt, die die Ziffer und die restlichen Bit vertreten, die keine Bedeutung haben.
  • Gepackt: Zwei Ziffern werden in ein einzelnes Byte, mit einer Ziffer im am wenigsten bedeutenden Nagen (Bit 0-3) und der anderen Ziffer im bedeutendsten Nagen (Bit 4-7) verschlüsselt.

Als ein Beispiel, die Dezimalzahl mit unkomprimiertem BCD verschlüsselnd, läuft auf das folgende binäre Muster von zwei Bytes hinaus:

Dezimalzahl: 9 1

Binär: 0000 1001 0000 0001

In gepacktem BCD würde dieselbe Zahl ein einzelnes Byte einbauen:

Dezimalzahl: 9 1

Binär: 1001 0001

Folglich ist die numerische Reihe für ein unkomprimiertes BCD Byte Null durch neun einschließliche, wohingegen die Reihe für einen gepackten BCD Null bis neunundneunzig einschließlich ist.

Um Zahlen zu vertreten, die größer sind als die Reihe eines einzelnen Bytes, kann jede Zahl von aneinander grenzenden Bytes verwendet werden. Zum Beispiel, um die Dezimalzahl in gepacktem BCD mit dem großen-endian Format zu vertreten, würde ein Programm wie folgt verschlüsseln:

Dezimalzahl: 1 2 3 4 5

Binär: 0000 0001 0010 0011 0100 0101

Bemerken Sie, dass das bedeutendste Nagen des bedeutendsten Bytes Null ist, andeutend, dass die Zahl in der Aktualität ist. Bemerken Sie auch, wie gepackter BCD im Lagerungsgebrauch verglichen mit unkomprimiertem BCD effizienter ist; die Verschlüsselung derselben Zahl im unkomprimierten Format würde um 100 Prozent mehr Lagerung verbrauchen.

Die Verschiebung und die Maskierung von Operationen werden verwendet, um eine gepackte BCD Ziffer einzupacken oder auszupacken. Andere logische Operationen werden verwendet, um eine Ziffer zu seinem gleichwertigen Bit-Muster umzuwandeln oder den Prozess umzukehren.

BCD in der Elektronik

BCD ist in elektronischen Systemen sehr üblich, wo ein numerischer Wert besonders in Systemen gezeigt werden soll, die allein aus der Digitallogik, und nicht bestehen einen Mikroprozessor enthalten. Durch das Verwenden von BCD kann die Manipulation von numerischen Daten für die Anzeige durch das Behandeln jeder Ziffer als ein getrennter einzelner Substromkreis außerordentlich vereinfacht werden. Das vergleicht viel näher die physische Wirklichkeit der Anzeigehardware — ein Entwerfer könnte beschließen, eine Reihe von getrennten identischen Sieben-Segmentanzeigen zu verwenden, um einen Messen-Stromkreis zum Beispiel zu bauen. Wenn die numerische Menge versorgt und manipuliert wurde, weil reine Dualzahl, zu solch einer Anzeige verbindend, kompliziertes Schaltsystem verlangen würde. Deshalb, in Fällen, wo die Berechnungen das relativ einfache Arbeiten überall mit BCD sind, kann zu einem einfacheren gesamten System führen als das Umwandeln zur Dualzahl.

Dasselbe Argument gilt, wenn die Hardware dieses Typs einen eingebetteten Mikrokontrolleur oder anderen kleinen Verarbeiter verwendet. Häufig können kleinere Codeergebnisse, wenn sie Zahlen innerlich im BCD-Format, seit einer Konvertierung von oder bis binäre Darstellung vertreten, auf solchen beschränkten Verarbeitern teuer sein. Für diese Anwendungen zeigen einige kleine Verarbeiter BCD arithmetische Weisen, die helfen, wenn sie Routinen schreiben, die BCD Mengen manipulieren.

Gepackter BCD

Eine allgemeine Schwankung der zwei Ziffern pro Byte-Verschlüsselung wird gepackten BCD genannt (oder hat einfach Dezimalzahl eingepackt), der im Gebrauch seit den 1960er Jahren oder früher gewesen ist und in der ganzen Großrechner-Hardware von IBM seitdem durchgeführt hat. In den meisten Darstellungen halten ein oder mehr Bytes eine dezimale ganze Zahl, wo jedes des zwei Nagens jedes Bytes eine dezimale Ziffer, mit mehr positiver Ziffer in der oberen Hälfte jedes Bytes, und mit dem leftmost Byte (das Wohnen an der niedrigsten Speicheradresse) vertritt, die meisten positiven Ziffern des gepackten dezimalen Werts enthaltend. Das niedrigere Nagen des niedrigstwertigen Bytes wird gewöhnlich als die Zeichen-Fahne verwendet (obwohl in einigen Darstellungen dieses Nagen als kleinste positive Ziffer verwendet werden kann, wenn der gepackte dezimale Wert kein Zeichen überhaupt hat, d. h., rein nicht unterzeichnet ist). Als ein Beispiel besteht ein 4-Byte-Wert aus 8 Nagen, worin das obere 7 Nagen die Ziffern eines 7-stelligen dezimalen Werts versorgt und das niedrigste Nagen das Zeichen des dezimalen Werts der ganzen Zahl anzeigt.

Standardzeichen-Werte sind 1100 (Hexe C) für den positiven (+) und 1101 (D) für den negativen (). Diese Tagung wurde aus Abkürzungen für Buchhaltungsbegriffe (Kredit und Soll) abgeleitet, weil das gepackte dezimale Codieren in Buchhaltungssystemen weit verwendet wurde. Andere erlaubte Zeichen sind 1010 (A) und 1110 (E) für den positiven und 1011 (B) für die Verneinung. Einige Durchführungen versorgen auch nicht unterzeichnete BCD-Werte mit einem Zeichen-Nagen 1111 (F). ILE RPG verwendet 1111 (F) für den positiven und 1101 (D) für die Verneinung. In gepacktem BCD wird die Nummer 127 durch 0001 0010 vertreten 0111 1100 (127C) und 127 wird durch 0001 0010 0111 1101 (127D) vertreten. Systeme von Burroughs haben 1101 (D) für die Verneinung verwendet, und jeder andere Wert wurde als ein positiver Zeichen-Wert betrachtet (die Verarbeiter würden ein positives Zeichen zu 1100 (C) normalisieren).

Egal wie viele Bytes breit ein Wort ist, gibt es immer eine gerade Zahl des Nagens, weil jedes Byte zwei von ihnen hat. Deshalb kann ein Wort von n Bytes bis zu (2n) 1 dezimale Ziffern enthalten, der immer eine ungerade Zahl von Ziffern ist. Eine Dezimalzahl mit d Ziffern verlangt ½ (d+1) Bytes des Abstellraums.

Zum Beispiel kann ein 4 Bytes (32 Bit) Wort sieben dezimale Ziffern plus ein Zeichen halten, und kann Werte im Intervall von ±9.999.999 vertreten. So ist die Nummer 1.234.567 7 Ziffern breit und wird als verschlüsselt:

0001 0010 0011 0100 0101 0110 0111 1101

1 2 3 4 5 6 7 

(Bemerken Sie, dass, wie Charakter-Schnuren, das erste Byte der gepackten Dezimalzahl - mit den bedeutendsten zwei Ziffern - gewöhnlich in der niedrigsten Adresse im Gedächtnis versorgt, vom endianness der Maschine unabhängig wird.)

Im Gegensatz kann eine ganze Ergänzungszahl eines binären 4-Byte-two Werte von 2.147.483.648 bis +2.147.483.647 vertreten.

Während gepackt, macht BCD optimalen Gebrauch der Lagerung nicht (über / des verwendeten Gedächtnisses wird vergeudet), die Konvertierung zu ASCII, EBCDIC, oder der verschiedene encodings von Unicode ist noch trivial, weil keine arithmetischen Operationen erforderlich sind. Die Extralagerungsvoraussetzungen werden gewöhnlich durch das Bedürfnis nach der Genauigkeit und Vereinbarkeit mit der Rechenmaschine ausgeglichen oder reichen Berechnung, die Dezimalzahl-Arithmetik des festen Punkts zur Verfügung stellt. Die dichtere Verpackung von BCD besteht, die die Lagerungsstrafe vermeiden und auch keine arithmetischen Operationen wegen allgemeiner Konvertierungen brauchen.

Gepackter BCD wird auf der COBOL-Programmiersprache als die "RECHENBETONTEN 3" (eine Erweiterung von IBM unterstützt, die von vielen anderen Bearbeiter-Verkäufern angenommen ist) oder "GEPACKTE DEZIMALZAHL" (ein Teil des 1985-COBOL-Standards) Datentyp. Außer IBM System/360 und späteren vereinbaren Großrechnern wurde gepackter BCD im heimischen Befehlssatz der ursprünglichen VAX Verarbeiter von Digital Equipment Corporation durchgeführt und war das heimische Format für die Medium-Systemlinie von Burroughs Corporation von Großrechnern (ist von den 1950er Jahren Electrodata 200 Reihen hinuntergestiegen).

Fester Punkt hat Dezimalzahl eingepackt

Dezimalzahlen des festen Punkts werden durch einige Programmiersprachen (wie COBOL und PL/I) unterstützt. Diese Sprachen erlauben dem Programmierer, einen impliziten dezimalen Punkt vor einer der Ziffern anzugeben. Zum Beispiel vertritt ein gepackter dezimaler Wert, der mit den Bytes 12 34 56 7C verschlüsselt ist, den Wert des festen Punkts +1,234.567, wenn der implizierte dezimale Punkt zwischen den 4. und 5. Ziffern gelegen wird:

12 34 56 7C

12 34.56 7+

Der dezimale Punkt wird im Gedächtnis nicht wirklich versorgt, weil das gepackte BCD Lagerungsformat dafür nicht sorgt. Seine Position ist einfach dem Bearbeiter bekannt, und der erzeugte Code handelt entsprechend für die verschiedenen arithmetischen Operationen.

Höhere Dichte encodings

Wenn eine dezimale Ziffer vier Bit verlangt, dann verlangen drei dezimale Ziffern 12 Bit. Jedoch, seitdem 2 (1,024) ist größer als 10 (1,000), wenn drei dezimale Ziffern zusammen verschlüsselt werden, sind nur 10 Bit erforderlich. Zwei solche encodings sind Chen-Ho, der verschlüsselt und Dicht Gepackte Dezimalzahl. Der Letztere hat den Vorteil, dass Teilmengen der Verschlüsselung zwei Ziffern in den optimalen sieben Bit und eine Ziffer in vier Bit, als in regelmäßigem BCD verschlüsseln.

In Zonen aufgeteilte Dezimalzahl

Einige Durchführungen, zum Beispiel Großrechner-Systeme von IBM, unterstützen in Zonen aufgeteilte dezimale numerische Darstellungen. Jede dezimale Ziffer wird in einem Byte mit den niedrigeren vier Bit versorgt, die die Ziffer in der BCD-Form verschlüsseln. Die oberen vier Bit, genannt die "Zonen"-Bit, werden gewöhnlich auf einen festen Wert gesetzt, so dass das Byte einen Charakter-Wert entsprechend der Ziffer hält. EBCDIC Systeme verwenden einen Zonenwert von 1111 (Hexe F); das gibt Bytes in der Reihe F0 zu F9 (Hexe) nach, die die EBCDIC-Codes für die Charaktere "0" bis "9" sind. Ähnlich verwenden ASCII Systeme einen Zonenwert von 0011 (Hexe 3), Charakter-Codes 30 bis 39 (Hexe) gebend.

Für unterzeichnete in Zonen aufgeteilte dezimale Werte hält das niedrigstwertige (am wenigsten bedeutende) Zonennagen die Zeichen-Ziffer, die derselbe Satz von Werten ist, die für unterzeichnete gepackte Dezimalzahlen verwendet werden (sieh oben). So vertritt ein in Zonen aufgeteilter dezimaler Wert verschlüsselt als die Hexe-Bytes F1 F2 D3 den unterzeichneten dezimalen Wert 123:

F1 F2 D3

1 2 3

EBCDIC hat dezimale Umrechnungstabelle in Zonen aufgeteilt

(*) Zeichen: Diese Charaktere ändern sich abhängig von der lokalen Charakter-Codeseiteneinstellung.

Fester Punkt hat Dezimalzahl in Zonen aufgeteilt

Einige Sprachen (wie COBOL und PL/I) unterstützen direkt in Zonen aufgeteilte dezimale Werte des festen Punkts, einen impliziten dezimalen Punkt an einer Position zwischen den dezimalen Ziffern einer Zahl zuteilend. Zum Beispiel, in Anbetracht sechs Bytes hat in Zonen aufgeteilten dezimalen Wert mit einem implizierten dezimalen Punkt rechts von der vierten Ziffer, die Hexe-Bytes unterzeichnet F1 F2 F7 F9 F5 C0 vertreten den Wert +1,279.50:

F1 F2 F7 F9 F5 C0

1 2 7 9. 5 +0

IBM und BCD

IBM hat die Begriffe binär codierte Dezimalzahl und BCD für 6 Bit alphameric Codes gebraucht, die Zahlen, Großbuchstaben und spezielle Charaktere vertreten haben. Etwas Schwankung von BCD alphamerics wurde in frühsten Computern von IBM, einschließlich IBM 1620, Reihe von IBM 1400 und nichtdezimaler Architektur-Mitglieder der Reihe von IBM 700/7000 verwendet.

Die Reihen von IBM 1400 waren Maschinen des Charakters-addressable, jede Position, die sechs Bit ist, hat B, A, 8, 4, 2 und 1, etikettiert

plus ein sonderbarer Paritätskontrolle-Bit-(C) und eine Wortmarke hat (M) gebissen.

Um Ziffern 1 bis 9, B und A zu verschlüsseln, waren Null und der Ziffer-Wert, der durch normalen 4-Bit-BCD in Bit 8 bis 1 vertreten ist.

Für die meisten anderen Charakter-Bit wurden B und A einfach von "12", "11", und "0" "Zonenschläge" im geschlagenen Karte-Charakter-Code und den Bit 8 bis 1 von den 1 bis 9 Schlägen abgeleitet.

Ein "12" Zonenschlag hat sowohl B als auch A gesetzt, eine "11 Zone" hat B gesetzt, und eine "0 Zone" (ein 0 Schlag, der mit irgendwelchem andere verbunden ist), hat A gesetzt.

So wurde der Brief A, (12,1) im geschlagenen Karte-Format, (B, A, 1) und der Währungssymbol-$, (11,8,3) in der geschlagenen Karte, als (B, 8,3) verschlüsselt.

Das hat dem Schaltsystem erlaubt, sich zwischen dem geschlagenen Karte-Format und dem inneren Lagerungsformat umzuwandeln, um mit nur einigen speziellen Fällen sehr einfach zu sein.

Ein wichtiger spezieller Fall war Ziffer 0, die durch einen einsamen 0 Schlag in der Karte, und (8,2) im Kerngedächtnis vertreten ist.

Das Gedächtnis von IBM 1620 wurde in 6 Bit addressable Ziffern organisiert, die üblichen 8, 4, 2, 1 plus F, haben als ein Fahne-Bit und C verwendet, eine sonderbare Paritätskontrolle hat gebissen. BCD alphamerics wurden mit Ziffer-Paaren, mit der "Zone" in der sogar gerichteten Ziffer und der "Ziffer" in der sonderbar gerichteten Ziffer, die "Zone" verschlüsselt, die mit den 12, 11, und 0 "Zonenschläge" als in der 1400-Reihe verbunden ist. Übersetzungshardware des Eingangs/Produktion hat sich zwischen den inneren Ziffer-Paaren und den BCD Außenstandard-6-Bit-Codes umgewandelt.

In der Dezimalen Architektur wurden IBM 7070, IBM 7072 und IBM 7074 alphamerics mit Ziffer-Paaren verschlüsselt (zwei fünf verwendend codieren in den Ziffern, nicht BCD) des 10-stelligen Wortes, mit der "Zone" in der linken Ziffer und der "Ziffer" in der richtigen Ziffer. Übersetzungshardware des Eingangs/Produktion hat sich zwischen den inneren Ziffer-Paaren und den BCD Außenstandard-6-Bit-Codes umgewandelt.

Mit der Einführung des Systems/360 hat sich IBM um 6 Bit BCD alphamerics zu 8-Bit-EBCDIC ausgebreitet, die Hinzufügung noch vieler Charaktere (z.B, Kleinbuchstaben) erlaubend. Gepackter BCD numerischer Datentyp einer variabler Länge wurde auch durchgeführt, Maschineninstruktionen zur Verfügung stellend, die Arithmetik direkt auf gepackten dezimalen Daten durchgeführt haben.

Auf IBM 1130 und 1800 wurde gepackter BCD in der Software durch das Kommerzielle Unterprogramm-Paket von IBM unterstützt.

Heute, BCD Daten wird noch in Verarbeitern von IBM und Datenbanken, wie IBM DB2, Großrechner und Power6 schwer verwendet. In diesen Produkten wird der BCD gewöhnlich BCD (als in EBCDIC oder ASCII), Gepackter BCD (zwei dezimale Ziffern pro Byte) oder "reiner" BCD in Zonen aufgeteilt, der (eine dezimale Ziffer versorgt als BCD in den niedrigen vier Bit jedes Bytes) verschlüsselt. Alle von diesen werden innerhalb von Hardware-Registern und in einer Prozession gehenden Einheiten, und in der Software verwendet.

Andere Computer und BCD

Die VAX-11 Reihe von Digital Equipment Corporation hat Instruktionen eingeschlossen, die Arithmetik direkt auf gepackten BCD Daten und Bekehrtem zwischen gepackten BCD Daten und anderen Darstellungen der ganzen Zahl durchführen konnten. Das gepackte BCD-Format des VAX war damit auf IBM System/360 und den späteren vereinbaren Verarbeitern von IBM vereinbar. MicroVAX und später haben VAX Durchführungen diese Fähigkeit von der Zentraleinheit fallen lassen, aber haben Codevereinbarkeit mit früheren Maschinen durch das Einführen der fehlenden Instruktionen in einer systemversorgten Betriebssoftwarebibliothek behalten. Das wurde automatisch über das Ausnahme-Berühren angerufen, als auf die nicht mehr durchgeführten Instruktionen gestoßen wurde, so dass Programme mit ihnen modifikationsfrei auf den neueren Maschinen durchführen konnten.

In neueren Computern werden solche Fähigkeiten fast immer in der Software aber nicht dem Befehlssatz der Zentraleinheit durchgeführt, aber BCD numerische Daten sind noch in kommerziellen und finanziellen Anwendungen äußerst üblich.

Hinzufügung mit BCD

Es ist möglich, Hinzufügung in BCD durch das erste Hinzufügen in der Dualzahl und dann Umwandeln zu BCD später durchzuführen. Die Konvertierung der einfachen Summe von zwei Ziffern kann durch das Hinzufügen 6 getan werden (d. h. 16 - 10), wenn das Ergebnis einen Wert hat, der größer ist als 9. Zum Beispiel:

1001 + 1000 = 10001 = 0001 0001

9 + 8 = 17 = 1 1

In BCD, dort kann kein Wert bestehen, der größer ist als 9 (1001) pro Nagen. Das, 6 (0110) zu korrigieren, wird zu dieser Summe hinzugefügt, um die richtigen ersten zwei Ziffern zu bekommen:

0001 0001 + 0000 0110 = 0001 0111

1 1 + 0 6 = 1 7

der zwei Nagen, 0001 und 0111 gibt, die den Ziffern "1" und "7" entsprechen. Das trägt "17" in BCD, der das richtige Ergebnis ist. Diese Technik kann zum Hinzufügen vielfacher Ziffern, durch das Hinzufügen in Gruppen vom Recht bis linken, das Fortpflanzen der zweiten Ziffer als ein Tragen, immer das Vergleichen des 5-Bit-Ergebnisses jeder Summe des Ziffer-Paares zu 9 erweitert werden.

Subtraktion mit BCD

Subtraktion wird durch das Hinzufügen der Ergänzung des ten des Subtrahenden getan. Um das Zeichen einer Zahl in BCD zu vertreten, wird die Nummer 0000 verwendet, um eine positive Zahl zu vertreten, und 1001 wird verwendet, um eine negative Zahl zu vertreten. Die restlichen 14 Kombinationen sind ungültige Zeichen. Um unterzeichnete BCD Subtraktion zu illustrieren, denken Sie das folgende Problem: 357 − 432.

In unterzeichnetem BCD, 357 ist 0000 0011 0101 0111. Die Ergänzung des ten 432 kann durch die Einnahme der Ergänzung des nine 432, und dann das Hinzufügen ein erhalten werden. Also, 999 − 432 = 567, und 567 + 1 = 568. Durch das Vorangehen 568 in BCD durch den negativen Zeichen-Code kann die Zahl −432 vertreten werden. Also, −432 in unterzeichnetem BCD ist 1001 0101 0110 1000.

Jetzt wo beide Zahlen in unterzeichnetem BCD vertreten werden, können sie zusammen hinzugefügt werden:

0000 0011 0101 0111 + 1001 0101 0110 1000 = 1001 1000 1011 1111

0 3 5 7 + 9 5 6 8 = 9 8 11 15

Da BCD eine Form der Dezimaldarstellung ist, sind mehrere der Ziffer-Summen oben ungültig. Falls ein ungültiger Zugang (jede BCD Ziffer, die größer ist als 1001), besteht, 6 wird hinzugefügt, um ein tragen Bit zu erzeugen und die Summe zu veranlassen, ein gültiger Zugang zu werden. Der Grund dafür, 6 beizutragen, besteht darin, dass es BCD 16 mögliche 4-Bit-Werte gibt (seit 2 = 16), aber nur 10 Werte sind (0000 bis 1001) gültig. So läuft das Hinzufügen 6 zu den ungültigen Einträgen auf den folgenden hinaus:

1001 1000 1011 1111 + 0000 0000 0110 0110 = 1001 1001 0010 0101

9 8 11 15 + 0 0 6 6 = 9 9 2 5

So ist das Ergebnis der Subtraktion 1001 1001 0010 0101 (-925). Um die Antwort zu überprüfen, bemerken Sie, dass das erste Bit das Zeichen-Bit ist, das negativ ist. Das scheint, seitdem 357 &minus richtig zu sein; 432 sollte auf eine negative Zahl hinauslaufen. Um den Rest der Ziffern zu überprüfen, vertreten Sie sie in der Dezimalzahl. 1001 0010 0101 ist 925. Die Ergänzung des ten 925 ist 1000 − 925 = 999 − 925 + 1 = 074 + 1 = 75, so ist die berechnete Antwort −75. Um zu überprüfen, führen Sie Standardsubtraktion durch, um das 357 &minus nachzuprüfen; 432 ist

−75.

Bemerken Sie das, falls es eine verschiedene Zahl des Nagens gibt, das zusammen wird hinzufügt (solcher als 1053 − 122), die Zahl mit wenigster Zahl von Ziffern muss zuerst mit Nullen vor der Einnahme der Ergänzung des ten oder dem Abziehen ausgepolstert werden. Also, mit 1053 − 122, 122 würde zuerst als 0122 vertreten werden müssen, und die Ergänzung des ten 0122 würde berechnet werden müssen.

Hintergrund

Das binär codierte dezimale in diesem Artikel beschriebene Schema ist die allgemeinste Verschlüsselung, aber es gibt viele andere. Die Methode hier kann Simple Binary-Coded Decimal (SBCD) oder BCD 8421 genannt werden.

In den Kopfbällen zum Tisch, '8 4 2 1', usw., zeigt das Gewicht jedes gezeigten Bit an; bemerken Sie, dass in der fünften Säule zwei der Gewichte negativ sind. Sowohl ASCII als auch EBCDIC Charakter-Codes für die Ziffern sind Beispiele von in Zonen aufgeteiltem BCD, und werden auch im Tisch gezeigt.

Der folgende Tisch vertritt dezimale Ziffern von 0 bis 9 in verschiedenen BCD Systemen:

Gesetzliche Geschichte

Im 1972-Fall Gottschalk v. Benson, das amerikanische Oberste Gericht hat eine niedrigere Gerichtsentscheidung gestürzt, die ein Patent erlaubt hatte, um sich umzuwandeln, hat BCD Zahlen zur Dualzahl auf einem Computer verschlüsselt. Das war ein wichtiger Fall in der Bestimmung der Patentierfähigkeit der Software und Algorithmen.

Vergleich mit der reinen Dualzahl

Vorteile

  • Viele nichtintegrierte Werte, wie dezimale 0.2, haben eine unendliche Darstellung des Platz-Werts im binären (.001100110011...), aber haben einen begrenzten Platz-Wert in der binär codierten Dezimalzahl (0.0010). Folglich vermeidet ein auf binär codierten Dezimaldarstellungen von Dezimalbrüchen gestütztes System das Fehlerdarstellen und Rechnen solcher Werte.
  • Das Schuppen durch einen Faktor 10 (oder eine Macht 10) ist einfach; das ist nützlich, wenn ein dezimaler Skalenfaktor erforderlich ist, um eine Menge der nichtganzen Zahl (z.B, in Finanzberechnungen) zu vertreten
  • Das Runden an einer dezimalen Ziffer-Grenze ist einfacher. Hinzufügung und Subtraktion in der Dezimalzahl verlangen das Runden nicht.
  • Die Anordnung von zwei Dezimalzahlen (zum Beispiel 1.3 + 27.08) ist ein einfacher, genaues, Verschiebung.
  • Die Konvertierung zu einer Charakter-Form oder für die Anzeige (z.B, zu einem textbasierten Format wie XML, oder Signale für eine Sieben-Segmentanzeige zu steuern), ist ein einfacher prostelligen kartografisch darzustellen, und kann im geradlinigen (O (n)) Zeit getan werden. Die Konvertierung von der reinen Dualzahl schließt relativ komplizierte Logik ein, die Ziffern abmisst, und für die große Anzahl kein geradlinig-maliger Umwandlungsalgorithmus bekannt ist (sieh Binäres Ziffer-System).

Nachteile

  • Einige Operationen sind komplizierter, um durchzuführen. Vipern verlangen, dass Extralogik sie veranlasst, ein Tragen früh zu wickeln und zu erzeugen. Um 15-20 Prozent mehr Schaltsystem ist für BCD erforderlich tragen im Vergleich zur reinen Dualzahl bei. Multiplikation verlangt den Gebrauch von Algorithmen, die etwas komplizierter sind als shift-mask-add (eine binäre Multiplikation, binäre Verschiebungen verlangend und beiträgt oder die Entsprechung prostelligen oder die Gruppe von Ziffern erforderlich ist)
  • Normaler BCD verlangt vier Bit pro Ziffer, ungefähr um 20 Prozent mehr Raum als eine binäre Verschlüsselung (ist das Verhältnis von 4 Bit zu log10 Bit 1.204). Wenn gepackt, so dass drei Ziffern in zehn Bit verschlüsselt werden, wird die Lagerung oben auf Kosten einer Verschlüsselung außerordentlich reduziert, die nach den auf der vorhandenen Hardware üblichen 8-Bit-Byte-Grenzen unausgerichtet wird, auf langsamere Durchführungen auf diesen Systemen hinauslaufend.
  • Praktische vorhandene Durchführungen von BCD sind normalerweise langsamer als Operationen auf binären Darstellungen besonders auf eingebetteten Systemen wegen der beschränkten Verarbeiter-Unterstützung für heimische BCD Operationen.

Anwendung

Der BIOS in vielen Personalcomputern versorgt das Datum und Zeit mit BCD, weil der MC6818 in der ursprünglichen Hauptplatine von IBM PC AT verwendete Realzeituhr-Span die in BCD verschlüsselte Zeit zur Verfügung gestellt hat. Diese Form wird in ASCII für die Anzeige leicht umgewandelt.

Die Atari 8-Bit-Familie von Computern hat BCD verwendet, um Schwimmpunkt-Algorithmen durchzuführen. Der MOS 6502 verwendeter Verarbeiter hat eine BCD Weise, die die Hinzufügung und Subtraktionsinstruktionen betrifft.

Frühe Modelle von PlayStation 3 versorgen das Datum und Zeit mit BCD. Das hat zu einem Weltausfall der Konsole am 1. März 2010 geführt. Die letzten zwei Ziffern des als BCD versorgten Jahres wurden als das 16 Verursachen eines Paradoxes im Datum der Einheit missdeutet, die meisten inoperablen Funktionalitäten machend.

Vertretungsschwankungen

Verschiedene BCD Durchführungen bestehen, die andere Darstellungen für Zahlen verwenden. Programmierbare Taschenrechner, die durch Instrumente von Texas, Hewlett Packard verfertigt sind, und verwenden andere normalerweise einen Schwimmpunkt BCD Format normalerweise mit zwei oder drei Ziffern für die (dezimale) Hochzahl. Die Extrabit der Zeichen-Ziffer können verwendet werden, um spezielle numerische Werte, wie Unendlichkeit, Unterlauf/Überschwemmung und Fehler (eine verdammte Anzeige) anzuzeigen.

Unterzeichnete Schwankungen

Unterzeichnete dezimale Werte können auf mehrere Weisen vertreten werden. Die COBOL-Programmiersprache unterstützt zum Beispiel insgesamt fünf in Zonen aufgeteilte dezimale Formate, jeder, das numerische Zeichen auf eine verschiedene Weise verschlüsselnd:

Telephony Binary Coded Decimal (TBCD)

GSM hat TBCD, eine Vergrößerung zu BCD entwickelt, wo die restlichen (unbenutzten) Bit-Kombinationen verwendet werden, um spezifische Telefonie-Charaktere hinzuzufügen. Es ist zu BCD rückwärts kompatibel.

Alternative encodings

Wenn Fehler in der Darstellung und Berechnung wichtiger sind als die Geschwindigkeit der Konvertierung zu und von der Anzeige, kann eine schuppige binäre Darstellung verwendet werden, der eine Dezimalzahl als eine binär verschlüsselte ganze Zahl und eine binär verschlüsselte unterzeichnete dezimale Hochzahl versorgt. Zum Beispiel, 0.2 kann als 2 vertreten werden.

Diese Darstellung erlaubt schnelle Multiplikation und Abteilung, aber kann verlangen, dass Verschiebung durch eine Macht 10 während der Hinzufügung und Subtraktion die dezimalen Punkte ausrichtet. Es ist für Anwendungen mit einer festgelegten Zahl von dezimalen Plätzen passend, die diese Anpassung - besonders finanzielle Anwendungen nicht dann verlangen, wo 2 oder 4 Ziffern nach dem dezimalen Punkt gewöhnlich genug sind. Tatsächlich ist das fast eine Form der festen Punkt-Arithmetik, da die Position des Basis-Punkts einbezogen wird.

Chen-Ho, der verschlüsselt, stellt eine boolean Transformation zur Verfügung, um Gruppen von drei BCD-verschlüsselten Ziffern zu und von 10-Bit-Werten umzuwandeln, die in der Hardware mit nur 2 oder 3 Tor-Verzögerungen effizient verschlüsselt werden können. Dicht Gepackte Dezimalzahl ist ein ähnliches Schema, das für die meisten significand verwendet wird, außer der Leitungsziffer, für eine der zwei alternativen Dezimalzahl encodings angegeben im IEEE 754-2008 Standard.

Siehe auch

  • Biquinäre codierte Dezimalzahl
  • Chen-Ho, der verschlüsselt
  • Dicht gepackte Dezimalzahl
  • Doppelt, plätschern ein Algorithmus, um Binärzahlen zu BCD umzuwandeln
  • Grauer Code
  • Problem des Jahres 2000
  • Dezimaler Computer

Weiterführende Literatur

  • Arithmetische Operationen in Digitalcomputern, R. K. Richards, 397pp, D. Van Nostrand Co., New York, 1955
  • Schmid, Hermann, Dezimale Berechnung, internationale Standardbuchnummer 0 471 76180 X, 266pp, Wiley, 1974
  • Superoptimizer: Ein Blick auf das Kleinste Programm, Henry Massalin, ACM Sigplan Benachrichtigungen, Vol. 22 #10 (Verhandlungen der Zweiten Internationalen Konferenz für die Architektonische Unterstützung für Programmiersprachen und Betriebssysteme), pp122-126, ACM, auch IEEE Computergesellschaftspresse #87CH2440-6, Oktober 1987
  • VLSI Designs für überflüssige binär codierte dezimale Hinzufügung, Behrooz Shirazi, David Y. Y. Yun und Chang N. Zhang, IEEE die Siebente Jährliche Internationale Konferenz von Phönix für Computer und Kommunikationen, 1988, pp52-56, IEEE, März 1988
  • Grundlagen der Digitallogik durch Brown und Vranesic, 2003
  • Modifiziert Tragen Blick Vorn BCD Viper Mit CMOS und Umkehrbarer Logikdurchführung, Himanshu Thapliyal und Hamid R. Arabnia, Verhandlungen von 2006 Internationale Konferenz für das Computerdesign (CDES '06), internationale Standardbuchnummer 1-60132-009-4, pp64-69, CSREA Presse, November 2006
  • Umkehrbare Durchführung des Konverters "Dicht Gepackte Dezimalzahl" zu und vom Format mit "Binäre Codierte Dezimalzahl" in IEEE-754R, A. Kaivani, A. Zaker Alhosseini, S. Gorgin, und M. Fazlali, 9. Internationaler Konferenz für die Informationstechnologie (ICIT '06), pp273-276, IEEE, Dezember 2006.
  • Dezimale arithmetische Bibliografie

Links


Tanzen Sie unten Produktion Boogie / BCD
Impressum & Datenschutz