Was bedeuten in der Binärschreibweise die Ziffern nach dem Basispunkt “.”?

Lesezeit: 5 Minuten

Benutzeravatar von Johnny Pauling
Johnny Pauling

Ich habe dieses Beispiel zum Konvertieren von einer Basis-10-Zahl in eine IEEE 754-Float-Darstellung

Number: 45.25 (base 10) = 101101.01 (base 2) Sign: 0
Normalized form N = 1.0110101 * 2^5
Exponent esp = 5  E = 5 + 127 = 132 (base 10) = 10000100 (base 2)
IEEE 754: 0 10000100 01101010000000000000000

Das macht für mich Sinn, bis auf eine Passage:

45.25 (base 10) = 101101.01 (base 2)

45 ist 101101 im Binärformat und das ist in Ordnung. Aber wie haben sie die 0,25 als 0,01 erhalten?

Benutzeravatar von Carl Norum
Karl Norum

Einfacher Stellenwert. In Basis 10 haben Sie diese Orte:

… 103 102 101 100 . 10-1 10-2 10-3

… Tausender, Hunderter, Zehner, Einer . Zehntel, Hundertstel, Tausendstel …

In ähnlicher Weise haben Sie in Binär (Basis 2) Folgendes:

… 23 22 21 20 . 2-1 2-2 2-3

… Achter, Vierer, Zweier, Einer . Hälften, Viertel, Achtel …

Also der zweite Platz nach dem . in binär sind Einheiten von 2-2die Ihnen gut als Einheiten von 1/4 (oder alternativ 0,25) bekannt sind.

  • +1, obwohl ich es ein bisschen humorvoll fand, die binären Stellen als “Achter, Vierer …” zu bezeichnen, wenn es nie mehr als einen dieser Werte pro Stelle gibt.

    – David Kaczyński

    8. März 2013 um 16:00 Uhr


  • @David, das ist ein guter Punkt. Ich schwafelte darüber, was ich dort tun sollte, aber ich ging mit dem Plural, um dem allgemeinen Dezimalgebrauch zu entsprechen, hoffentlich um die Erklärung leicht verständlich zu machen.

    – Karl Norum

    8. März 2013 um 16:54 Uhr

Benutzeravatar von mkataja
mkataja

Sie können den Teil nach dem Dezimalkomma in eine andere Basis umwandeln, indem Sie wiederholt mit der neuen Basis multiplizieren (in diesem Fall ist die neue Basis 2), wie folgt:

0.25 * 2 = 0.5

-> Die erste Binärziffer ist 0 (nehmen Sie den ganzzahligen Teil, dh den Teil vor dem Komma).

Multipliziere weiter mit dem Teil nach dem Komma:

0.5 * 2 = 1.0

-> Die zweite Binärziffer ist 1 (wieder den ganzzahligen Teil nehmen).

Hier hören wir auch auf, weil der Teil nach dem Komma jetzt Null ist, also nichts mehr zu multiplizieren ist.

Daher ist die endgültige binäre Darstellung des Bruchteils: 0,012.

Bearbeiten:

Es ist auch erwähnenswert, dass die binäre Darstellung ziemlich oft unendlich ist, selbst wenn mit einem endlichen Bruchteil zur Basis 10 begonnen wird. Beispiel: Konvertieren von 0,210 zu binär:

0.2 * 2 = 0.4   ->   0
0.4 * 2 = 0.8   ->   0
0.8 * 2 = 1.6   ->   1
0.6 * 2 = 1.2   ->   1
0.2 * 2 = ...

Am Ende erhalten wir also: 0,001100110011…2.

Mit dieser Methode sehen Sie ganz einfach, ob die binäre Darstellung am Ende unendlich ist.

Benutzeravatar von Mooing Duck
Muhende Ente

„Dezimalzahlen“ (Bruchbits) in anderen Basen sind überraschend unintuitiv, wenn man bedenkt, dass sie genau so funktionieren wie ganze Zahlen.

base 10
scinot 10e2  10e1  10e0 10e-1 10e-2 10e-3
weight 100.0 10.0   1.0  0.1   0.01  0.001
value  0     4      5     .2      5      0

base 2
scinot 2e6 2e5 2e4 2e3 2e2 2e1 2e0 2e-1 2e-2 2e-3
weight 64  32  16   8   4   2   1   .5   .25 .125
value   0   1   0   1   1   0   1   .0    1    0   

Wenn wir mit 45,25 beginnen, ist das größer/gleich als 32, also addieren wir eine binäre 1 und subtrahieren 32.
Uns bleibt 13,25, was kleiner als 16 ist, also fügen wir eine binäre 0 hinzu.
Uns bleibt 13,25, was größer/gleich 8 ist, also addieren wir eine binäre 1 und subtrahieren 8.
Uns bleibt 05.25, was größer/gleich 4 ist, also addieren wir eine binäre 1 und subtrahieren 4.
Uns bleibt 01.25, was kleiner als 2 ist, also fügen wir eine binäre 0 hinzu.
Uns bleibt 01.25, was größer/gleich 1 ist, also addieren wir eine binäre 1 und subtrahieren 1.
Mit ganzen Zahlen hätten wir null übrig, also hören wir auf. Aber:
Uns bleibt 00,25, was kleiner als 0,5 ist, also fügen wir eine binäre 0 hinzu.
Uns bleibt 00,25, was größer/gleich 0,25 ist, also addieren wir eine binäre 1 und subtrahieren 0,25.
Jetzt wir haben null, also hören wir auf (oder nicht, du kannst ewig weitermachen und Nullen berechnen, wenn du willst)

Beachten Sie, dass nicht alle “einfachen” Dezimalzahlen immer diesen Nullpunkt erreichen. 0,1 (dezimal) konvertiert in die Basis 2, wiederholt sich unendlich: 0,0001100110011001100110011 … Alle “einfachen” Zahlen im Binärformat werden jedoch immer gut in die Basis 10 konvertiert.

Sie können den gleichen Vorgang auch mit gebrochenen (2,5), irrationalen (pi) oder sogar imaginären (2i) Basen durchführen, außer dass die Basis nicht zwischen -1 und 1 einschließlich liegen kann.

  • Aber wir können keine imaginären Zahlen vergleichen, oder?

    – Rotsor

    8. März 2013 um 7:13 Uhr

  • @Rotsor: Ich denke, wir können, ich weiß nur nicht wie. Knuth fand heraus, wie man mit irrationalen Basen arbeitet: en.wikipedia.org/wiki/Quater-imaginary_base

    – Muhende Ente

    8. März 2013 um 17:21 Uhr


  • @Rotsor & Mooing Duck: Rotsor hat Recht in dem Sinne, dass die mathematischen Ungleichungen (<, >, <=, >=) für komplexe Zahlen nicht definiert sind. Eine Möglichkeit, das Problem zu umgehen, wäre die Verwendung von Knuths viertelimaginärer Basis, da komplexe Zahlen in einem einzigen Term in dieser Basis geschrieben werden können (Beispiel 7 + 4i (Basis 10) = 10323 (Basis 2i)). Die Vergleiche in Dezimalbasis würden jedoch nicht immer die gleichen Ergebnisse wie in viertel-imaginär liefern. Zum Beispiel: 0 > -4 (Basis 10), während 0 < 1000 (Basis 2i). (-4 (Basis 10) = 1000 (Basis 2i))

    – Nijoakim

    5. April 2014 um 16:59 Uhr

  • @nijoakim: Gut zu wissen, dass mathematische Ungleichungen nicht definiert sind und dass der “offensichtliche” Weg nicht mit Vergleichen rationaler Zahlen übereinstimmt. Ich bleibe jedoch bei meiner Überzeugung, dass es wahrscheinlich einen sinnvollen Weg gibt.

    – Muhende Ente

    5. April 2014 um 17:15 Uhr

  • @MooingDuck: Ja, ich stimme zu, dass das durchaus möglich ist. Ich habe tatsächlich versucht, einen herauszufinden, seit Sie dies gepostet haben, aber es stellte sich als ziemlich schwierig heraus.

    – Nijoakim

    5. April 2014 um 18:45 Uhr

2.00010 = 2+1 = 10.0002

1.00010 = 2+0 = 01.0002

0,50010 = 2-1 = 00.1002

0,25010 = 2-2 = 00.0102

0,12510 = 2-3 = 00.0012

Die Brüche zur Basis 2 sind 0,1 = 1/2, 0,01 = 1/4. …

Benutzeravatar von Chuck Petras
Chuck Petras

Denk darüber so

(Punkt) 2^-1 2^-2 2^-3 usw

Also

. 0/2 + 1/4 + 0/8 + 0/16 usw

Sehen http://floating-point-gui.de/formats/binary/

Benutzeravatar von Thanasis Ioannidis
Thanasis Ioannidis

Sie können sich 0,25 als 1/4 vorstellen.

Das Teilen durch 2 Zoll (Basis 2) verschiebt das Dezimalkomma einen Schritt nach links, auf dieselbe Weise verschiebt das Teilen durch 10 Zoll (Basis 10) das Dezimalkomma einen Schritt nach links. Im Allgemeinen verschiebt das Dividieren durch M in (Basis M) das Dezimalkomma um einen Schritt nach links.

Also

base 10                  base 2
--------------------------------------
1                      =>      1
1/2 = 0.5              =>    0.1
0.5/2 = 1/4 = 0.25     =>   0.01 
0.25/2 = 1/8 = 0.125   =>  0.001
.
.
.

usw.

1401610cookie-checkWas bedeuten in der Binärschreibweise die Ziffern nach dem Basispunkt “.”?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy