Computerzahl-Format

Ein Computerzahl-Format ist die innere Darstellung von numerischen Werten in der Digitalcomputer- und Rechenmaschine-Hardware und Software.

Bit, Bytes, Nagen und nicht unterzeichnete ganze Zahlen

Bit

Wenig ist eine binäre Ziffer, die einen von zwei Staaten vertritt. Das Konzept von wenig kann als ein Wert entweder von 1 oder von 0, auf oder von, ja oder nein, wahr oder falsch verstanden, oder durch einen Schalter oder Knebelknopf von einer Art verschlüsselt werden.

Während ein einzelnes Bit selbstständig im Stande ist, nur zwei Werte zu vertreten, kann eine Schnur von Bit verwendet werden, um größere Werte zu vertreten. Zum Beispiel kann eine Schnur von drei Bit bis zu acht verschiedene Werte wie folgt vertreten:

Als die Zahl von Bit, die eine Schnur zusammensetzen, zunimmt, nimmt die Zahl von möglichen 0 und 1 Kombinationen exponential zu. Während ein einzelnes Bit nur zwei Wertkombinationen erlaubt und verbundene zwei Bit vier getrennte Werte und so weiter machen können. Der Betrag von möglichen Kombinationen verdoppelt sich mit jeder binären Ziffer hat beigetragen:

Byte

Ein Byte wenig Schnur, die die Zahl von Bit enthält, musste einen Charakter vertreten. Auf den meisten modernen Computern ist das eine Acht-Bit-Schnur. Weil die Definition eines Bytes mit der Zahl von Bit verbunden ist, die einen Charakter zusammensetzen, haben einige ältere Computer eine verschiedene Bit-Länge für ihr Byte verwendet. In vielen Computerarchitekturen wird das Byte verwendet, um spezifische Gebiete des Gedächtnisses zu richten. Zum Beispiel, wenn auch 64-Bit-Verarbeiter Gedächtnis vierundsechzig Bit auf einmal richten können, können sie noch dieses Gedächtnis in Acht-Bit-Stücke spalten. Das wird Gedächtnis des Bytes-addressable genannt. Historisch lesen viele Zentraleinheiten Daten in einem Vielfache von acht Bit. Weil die Byte-Größe von acht Bit so üblich ist, aber die Definition wird nicht standardisiert, wird der Begriff Oktett manchmal gebraucht, um eine Acht-Bit-Folge ausführlich zu beschreiben.

Nagen

In der Computerwissenschaft ist ein Nagen (häufig nybble oder sogar nyble, um die Rechtschreibung des Bytes vorzutäuschen), eine Vier-Bit-Ansammlung oder ein halbes Oktett. Da ein Nagen 4 Bit enthält, gibt es sechzehn (2) mögliche Werte, so entspricht ein Nagen einer einzelnen hexadecimal Ziffer (häufig gekennzeichnet als eine "Hexe-Ziffer"), sowie eine dezimale Ziffer zu sein, wenn Daten in einigen Formaten der binären codierten Dezimalzahl (BCD) versorgt werden.

Warum binär?

  • Computer verwenden Logik von Boolean, die eine zwei geschätzte Logik ist, und so die zwei Staaten eines binären Systems direkt mit den zwei Staaten von Boolean logisches System verbinden können.
  • Es war leichter, Hardware zu machen, die zwischen zwei Werten unterscheiden kann als vielfache Werte.
  • Binär ist ein bisschen effizienter als Dezimalzahl. Viele frühe Computer haben Dezimalzahl (gewöhnlich in der binär codierten Dezimaldarstellung) verwendet. Diese Annäherung wurde schließlich wegen der Zunahme im in einer Prozession gehenden Schaltsystem im Vergleich zur Dualzahl größtenteils aufgegeben.
  • Andere Basen sind versucht worden. Einige experimentelle Computer sind mit dem dreifältigen gebaut worden (stützen Sie 3), Darstellung, weil es gedacht wurde, dass es effizienter sein könnte als binär.

Oktal- und Hexe-Zahl-Anzeige

Siehe auch Base64.

Oktal- und Hexe sind eine günstige Weise, Binärzahlen, wie verwendet, durch Computer zu vertreten. Computeringenieure müssen häufig binäre Größen ausschreiben, aber in der Praxis, die eine Binärzahl solcher als 1001001101010001 ausschreibt, ist langweilig, und für Fehler anfällig. Deshalb werden binäre Größen in einer Basis 8 ("Oktal-") oder, viel allgemeiner, eine Basis 16 ("hexadecimal" oder "Hexe") Zahl-Format geschrieben.

Im dezimalen System gibt es 10 Ziffern (0 bis 9), die sich verbinden, um Zahlen wie folgt zu bilden:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22...

In einem Oktalsystem gibt es nur 8 Ziffern (0 bis 7):

0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26...

D. h. ein Oktal-"10" ist dasselbe als eine Dezimalzahl "8", ein Oktal-"20" ist eine Dezimalzahl "16", und so weiter.

In einem Hexe-System gibt es 16 Ziffern (0 durch 9 gefolgte, durch die Tagung, mit durch F):

0 1 2 3 4 5 6 7 8 9 EIN B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B...

D. h. eine Hexe "10" ist dasselbe als eine Dezimalzahl "16", und eine Hexe "20" ist dasselbe als eine Dezimalzahl "32".

Das Umwandeln zwischen Basen

Jedes dieser Zahl-Systeme ist Stellungssysteme, aber während dezimale Gewichte Mächte 10 sind, sind die Oktalgewichte Mächte 8, und die Hexe-Gewichte sind Mächte 16. Um sich von der Hexe oder Oktal-zur Dezimalzahl für jede Ziffer umzuwandeln, multipliziert man den Wert der Ziffer durch den Wert seiner Position und fügt dann die Ergebnisse hinzu. Zum Beispiel:

756 Oktal-

= (7 × 8) + (5 × 8) + (6 ×8)

= (7 × 64) + (5 × 8) + (6 × 1)

= 448 + 40 + 6 = dezimale 494

Hexe 3b2

= (3 × 16) + (11 × 16) + (2 × 16)

= (3 × 256) + (11 × 16) + (2 × 1)

= 768 + 176 + 2 = dezimale 946

Das Darstellen von Bruchteilen in der Dualzahl

Festkommazahlen

Formate des festen Punkts werden häufig in Geschäftsberechnungen verwendet (solcher als mit Spreadsheets oder COBOL), wo der Schwimmpunkt mit der ungenügenden Präzision wenn unannehmbar ist, sich mit Geld befassend. Formatierender fester Punkt kann nützlich sein, um zu sehen, wie Bruchteile in der Dualzahl versorgt werden können.

Mehrere Bit, die für die Präzision und erforderliche Reihe genügend sind, müssen gewählt werden, um die Bruchteile und Teile der ganzen Zahl einer Zahl zu versorgen. Zum Beispiel, mit einem 32-Bit-Format, könnten 16 Bit für die ganze Zahl und 16 für den Bruchteil verwendet werden.

Die Bruchbit setzen das durch die Bit der ganzen Zahl gesetzte Muster fort: Dem Bit des eight wird vom Bit des four, dann dem Bit des two, dann jemandes Bit gefolgt, dann natürlich ist das folgende Bit das Bit der Hälfte, dann das Bit des Viertels, dann hat der ⅛'s usw. gebissen.

Beispiele:

Bit der ganzen Zahl Bruchbit

0.5 = ½ = 00000000 00000000.10000000 00000000

1.25 = 1¼ = 00000000 00000001.01000000 00000000

7.375 = 7⅜ = 00000000 00000111.01100000 00000000

Jedoch, mit dieser Form, Mittel zu verschlüsseln, dass einige Zahlen in der Dualzahl nicht vertreten werden können. Zum Beispiel, für den Bruchteil 1/5 (in der Dezimalzahl ist das 0.2), kann der nächste kommen ist:

13107/65536 = 00000000 00000000.00110011 00110011 = 0.1999969... in der Dezimalzahl

13108/65536 = 00000000 00000000.00110011 00110100 = 0.2000122... in der Dezimalzahl

Und sogar mit mehr Ziffern ist eine genaue Darstellung unmöglich. Denken Sie die Nummer 1/3. Wenn Sie die Zahl als eine Dezimalzahl ausschreiben sollten (0.333333...), würde sie unbestimmt weitergehen. Wenn Sie an einem Punkt anhalten sollten, würde die schriftliche Zahl die Nummer 1/3 nicht genau vertreten.

Der Punkt ist: Einige Bruchteile können genau in der binären Notation... nicht nicht ausgedrückt werden, wenn Sie keinen speziellen Trick verwenden. Der Trick ist, um einen Bruchteil als zwei Zahlen, ein für den Zähler und ein für den Nenner zu versorgen, und dann Arithmetik zu verwenden, um sie hinzuzufügen, abzuziehen, zu multiplizieren, und zu teilen. Jedoch wird Arithmetik Sie höhere Mathematik (wie Quadratwurzeln) mit Bruchteilen nicht tun lassen, noch es wird Ihnen helfen, wenn der kleinste gemeinsame Nenner von zwei Bruchteilen eine zu große Zahl ist, um zu behandeln. Das ist, warum es Vorteile für das Verwenden der Festkommadarstellung für Bruchzahlen gibt.

Schwimmpunkt-Zahlen

Während sowohl nicht unterzeichnete als auch unterzeichnete ganze Zahlen in Digitalsystemen verwendet werden, ist sogar eine ganze 32-Bit-Zahl nicht genug, um die ganze Reihe von Zahlen zu behandeln, die eine Rechenmaschine behandeln kann, und es Bruchteile nicht sogar einschließt. Um der größeren Reihe und Präzision von reellen Zahlen näher zu kommen, müssen wir unterzeichnete ganze Zahlen und Festkommazahlen aufgeben und zu einem "Schwimmpunkt"-Format gehen.

Im dezimalen System sind wir mit Schwimmpunkt-Zahlen der Form (wissenschaftliche Notation) vertraut:

: 1.1030402 × 10 = 1.1030402 × 100000 = 110304.02

oder, kompakter:

1.1030402E5

was "1.103402mal 1 gefolgten durch 5 zeroes" bedeutet. Wir haben einen bestimmten numerischen Wert (1.1030402) bekannt als ein "significand", der mit einer Macht 10 (E5 multipliziert ist, 10 oder 100,000 vorhabend), bekannt als eine "Hochzahl".

Wenn wir eine negative Hochzahl haben, die bedeutet, dass die Zahl mit 1 dass viele Plätze rechts vom dezimalen Punkt multipliziert wird. Zum Beispiel:

: 2.3434E-6 = 2.3434 × 10 = 2.3434 × 0.000001 = 0.0000023434

Der Vorteil dieses Schemas besteht darin, dass, indem wir die Hochzahl verwenden, wir eine viel breitere Reihe von Zahlen bekommen können, selbst wenn die Zahl von Ziffern im significand oder die "numerische Präzision", viel kleiner ist als die Reihe.

Ähnliche binäre Schwimmpunkt-Formate können für Computer definiert werden. Es gibt mehrere solche Schemas, das populärste ist vom Institut für Elektrische und Elektronikingenieure (IEEE) definiert worden. Der IEEE 754-2008 Standardspezifizierung definiert ein 64-Bit-Schwimmpunkt-Format mit:

  • eine binäre 11-Bit-Hochzahl, mit "" 1023 Überformat. Überschüssige 1023 bedeuten, dass die Hochzahl als eine nicht unterzeichnete binäre ganze Zahl von 0 bis 2047 erscheint, und Sie 1023 davon Abstriche machen müssen, um den wirklichen unterzeichneten Wert zu bekommen
  • 52 Bit significand, auch eine nicht unterzeichnete Binärzahl, einen Bruchwert mit einer Führung definierend, haben "1" einbezogen
  • ein Zeichen hat gebissen, das Zeichen der Zahl gebend.

Wollen wir sehen, wie was dieses Format durch die Vertretung aussieht, wie solch eine Zahl in 8 Bytes des Gedächtnisses versorgt würde:

wo "S" anzeigt, dass das Zeichen gebissen hat, zeigt "x" an, dass eine Hochzahl gebissen hat, und "m" anzeigt, dass ein significand gebissen hat. Sobald die Bit hier herausgezogen worden sind, werden sie mit der Berechnung umgewandelt:

: <sign> × (1 + <fractional significand&gt) × 2

Dieses Schema stellt Zahlen gültig zu ungefähr 15 dezimalen Ziffern mit der folgenden Reihe von Zahlen zur Verfügung:

</Tisch>

Die Spekulation definiert auch mehrere spezielle Werte, die nicht definierte Zahlen sind, und als NaNs, für "Nicht Eine Zahl" bekannt sind. Diese werden durch Programme verwendet, um ungültige Operationen und ähnlich zu benennen. Sie werden auf sie selten stoßen, und NaNs wird weiter hier nicht besprochen.

Einige Programme verwenden auch 32-Bit-Schwimmpunkt-Zahlen. Das allgemeinste Schema verwendet 23 Bit significand mit einem Zeichen-Bit plus eine 8-Bit-Hochzahl im "" 127 Überformat, sieben gültige dezimale Ziffern gebend.

Byte 0: S x7 x6 x5 x4 x3 x2 x1

Byte 1: x0 m22 m21 m20 m19 m18 m17 m16

Byte 2: m15 m14 m13 m12 m11 m10 m9 m8

Byte 3: m7 m6 m5 m4 m3 m2 m1 m0

Die Bit werden zu einem numerischen Wert mit der Berechnung umgewandelt:

: &lt;sign&gt; &times; (1 + &lt;fractional significand&gt) &times; 2

das Führen zur folgenden Reihe von Zahlen:

</Tisch>

Solche Schwimmpunkt-Zahlen sind als "reals" oder "Hin- und Herbewegungen" im Allgemeinen, aber mit mehreren inkonsequenten Schwankungen abhängig vom Zusammenhang bekannt:

Ein 32-Bit-Wert der Hin- und Herbewegung wird manchmal einen "real32" oder eine "Single" genannt, "Schwimmpunkt-Wert der einfachen Präzision" bedeutend.

Eine 64-Bit-Hin- und Herbewegung wird manchmal einen "real64" oder einen "doppelten" genannt, "Schwimmpunkt-Wert der doppelten Genauigkeit" bedeutend.

Der Begriff "echter" ohne jede Weiterentwicklung bedeutet allgemein einen 64-Bit-Wert, während der Begriff "Hin- und Herbewegung" ähnlich allgemein einen 32-Bit-Wert bedeutet.

Erinnern Sie sich wieder, dass Bit Bit sind. Wenn Sie acht Bytes im Computergedächtnis versorgen ließen, könnten es 64 Bit echt, zwei 32 Bit reals, oder vier unterzeichnete oder nicht unterzeichnete ganze Zahlen oder eine andere Art von Daten sein, die acht Bytes einbaut.

Der einzige Unterschied ist, wie der Computer sie interpretiert. Wenn der Computer vier nicht unterzeichnete ganze Zahlen versorgen würde und dann lesen Sie sie zurück auswendig als echte 64 Bit, würde es fast immer eine vollkommen gültige reelle Zahl sein, obwohl es Trödel-Daten sein würden.

So, jetzt kann unser Computer positive und negative Zahlen mit Bruchteilen behandeln. Jedoch sogar mit Schwimmpunkt-Zahlen geraten Sie in einige derselben Probleme, die Sie mit ganzen Zahlen getan haben:

  • Als mit ganzen Zahlen haben Sie nur einen begrenzten Wertbereich, um sich zu befassen. Gewährt ist es ein viel größerer Wertbereich als sogar eine ganze 32-Bit-Zahl, aber wenn Sie fortsetzen, Zahlen zu multiplizieren, werden Sie schließlich einen größeren bekommen, als der echte Wert halten und eine numerische Überschwemmung haben kann. Wenn Sie fortsetzen sich zu teilen, werden Sie schließlich ein mit einer negativen für den echten Wert zu großen Hochzahl veranlassen, einen numerischen Unterlauf zu halten und zu haben. Erinnern Sie sich, dass eine negative Hochzahl die Zahl von Plätzen rechts vom dezimalen Punkt gibt und eine wirklich kleine Zahl bedeutet. Der maximale echte Wert wird manchmal "Maschinenunendlichkeit" genannt, da es der größte Wert ist, kann der Computer sein kleines Silikongehirn ringsherum wickeln.
  • Ein zusammenhängendes Problem besteht darin, dass Sie nur "Präzision" ebenso beschränkt haben. D. h. Sie können nur 15 dezimale Ziffern mit echten 64 Bit vertreten. Wenn das Ergebnis eines Multiplikationsproduktes oder eines Abteilungsquotienten mehr Ziffern hat als das, sind sie gerade fallen gelassen, und der Computer informiert Sie über einen Fehler nicht. Das bedeutet, dass, wenn Sie eine sehr kleine Zahl zu einer sehr großen hinzufügen, das Ergebnis gerade das große ist. Die kleine Zahl war zu klein, um sogar in 15 oder 16 Ziffern der Entschlossenheit aufzutauchen, und der Computer verwirft es effektiv. Wenn Sie Berechnung durchführen und Sie anfangen, wirklich wahnsinnige Antworten von Dingen zu bekommen, die normalerweise arbeiten, müssen Sie eventuell die Reihe Ihrer Daten überprüfen. Es ist möglich, die Werte "zu erklettern", um genauere Ergebnisse zu bekommen. Es bedeutet auch, dass, wenn Sie Schwimmpunkt-Berechnung tun, es wahrscheinlich einen kleinen Fehler im Ergebnis geben wird, seitdem einige niedrigere Ziffern fallen gelassen gewesen sind. Diese Wirkung ist in den meisten Fällen unbemerkenswert, aber wenn Sie etwas Matheanalyse tun, die viel Berechnung verlangt, neigen die Fehler dazu sich zu entwickeln und können die Ergebnisse abwerfen. Der Bruchteil von Leuten, die Computer verwenden, um Mathematik zu tun, versteht diese Fehler sehr gut, und hat Methoden, für die Effekten solcher Fehler zu minimieren, sowie um zu schätzen, wie groß die Fehler sind. Übrigens ist dieses "Präzisions"-Problem nicht dasselbe als das "Reihe"-Problem an der Oberseite von dieser Liste. Das Reihe-Problem befasst sich mit der maximalen Größe der Hochzahl, während sich das Präzisionsproblem mit der Zahl von Ziffern befasst, die den significand einbauen können.
  • Ein anderer dunklerer Fehler, der mit Schwimmpunkt-Zahlen hineinkriecht, ist die Tatsache, dass der significand als ein binärer Bruchteil ausgedrückt wird, der keinen Dezimalbruch notwendigerweise vollkommen vergleicht. D. h. wenn Sie eine Berechnung auf einem Dezimalbruch tun wollen, der eine ordentliche Summe von gegenseitigen Mächten zwei ist, solcher als 0.75 wird die Binärzahl, die diesen Bruchteil vertritt, 0.11, oder ½ + ¼ sein, und alle werden fein sein. Leider in vielen Fällen können Sie keine Summe dieser "gegenseitigen Mächte 2" bekommen, der genau einen spezifischen Dezimalbruch vergleicht, und die Ergebnisse der Berechnung, Weg unten in den sehr kleinen Teilen eines Bruchteils sehr ein bisschen aus sein werden. Zum Beispiel ist der Dezimalbruch "0.1" zu einem sich ungeheuer wiederholenden binären Bruchteil gleichwertig: 0.000110011...

Zahlen auf Programmiersprachen

Auf niedriger Stufe Programmierer müssen sich über nicht unterzeichneten und unterzeichnetes, befestigtes und Schwimmpunkt-Zahlen sorgen. Sie müssen äußerst verschiedenen Code, mit verschiedenem opcodes und operands schreiben, um zwei Schwimmpunkt-Zahlen im Vergleich zum Code hinzuzufügen, um zwei ganze Zahlen hinzuzufügen.

Jedoch bieten Programmiersprachen auf höchster Ebene wie LISPELN und Pythonschlange eine abstrakte Zahl an, die ein ausgebreiteter Typ solcher als vernünftig, bignum, oder Komplex sein kann. Programmierer im LISPELN oder der Pythonschlange (unter anderen) haben eine Versicherung, dass ihr Programm-Code Die Richtige Sache mit mathematischen Operationen Machen wird. Wegen des Maschinenbedieners, der, mathematischer Operationen auf jeder Zahl überlädt —, ob unterzeichnet, nicht unterzeichnet, vernünftig, Schwimmpunkt, fester Punkt, integriert, oder kompliziert — genau derselbe Weg geschrieben wird. Andere, die Sprachen, wie REXX und Java, dezimalen Schwimmpunkten zur Verfügung stellen, der viele "unerwartete" Ergebnisse vermeidet. Ein Nachteil in Java obwohl, ist sein Mangel an der heimischen Unterstützung für nicht unterzeichnete Typen der ganzen Zahl.

Siehe auch

Zeichen und Verweisungen

Außenverbindungen


Statistiker / Yosemite Nationalpark
Impressum & Datenschutz