Das Schneider CPC Systembuch

Grundlagen

Andere Zahlensysteme

Zahlen mit 'Dezimal'punkt in anderen Zahlensystemen

Genauso wie im Zehnersystem lassen sich in allen anderen Andere Zahlensysteme: Polyadische Zahlensystemepolyadischen Zahlensystemen auch 'krumme' Werte angeben. Um zu ergründen, wie das geht, sieht man sich am besten einmal eine solche Zahl in dezimaler Schreibweise an:

                                            1            1           1
    825,125 = 8*100  + 2*10   + 5*1    + 1*----    + 2*-----   + 5*------
                                            10          100         1000

    825,125 = 8*10^2 + 2*10^1 + 5*10^0 + 1*10^(-1) + 2*10^(-2) + 5*10^(-3)
                   -        -        -         --          --          --

Wie man sieht, geht es hinter dem Komma gerade so weiter, wie es davor aufgehört hat. Das Komma kennzeichnet nur die Stelle, an der das Vorzeichen des 'Stellenexponenten' wechselt.

Diese Stelle muss wahrhaftig irgendwie gekennzeichnet werden. Denn wie bei den unendlich vielen Vornullen erkennt man hier, dass es nach hinten ebenfalls unendlich weit weitergeht:

    825,125 = ...000000000000000000000825,1250000000000000000000000...

Manchmal werden auch tatsächlich alle Stellen gebraucht:

                                                  ______
    1/7 = 00000000,14285712857142857142857... = 0,142857

Wofür dann ein Querstrich die unendlich wiederholte Periode kennzeichnet.

Umrechnung in's Dezimal-System

Mit diesem Wissen gerüstet, sollte es jetzt eigentlich möglich sein, eine binäre oder hexadezimale Kommazahl in's dezimale zu übertragen:

    (10,101)2 = (?)10

    (10,101)2 = 1*2^1 + 0*2^0 + 1*2^(-1) + 0*2^(-2) + 1*2^(-3)

              =   2,0000              2^ 1 = 2
                + 0,0000              2^ 0 = 1
                + 0,5000              2^-1 = 1/(2^1) = 1/2 = 0.5
                + 0,0000              2^-2 = 1/(2^2) = 1/4 = 0.25
                + 0,1250              2^-3 = 1/(2^3) = 1/8 = 0.125
                --------
              =  (2,625)10


    (8,Der Zeichensatz des Schneider CPC: &F8 = 248F8)16 = (?)10

    (8,Der Zeichensatz des Schneider CPC: &F8 = 248F8)16 = 8*16^0 + 15*16^(-1) + 8*16^(-2)
             = 8*1    + 15*0.0625  + 8*0.00390625


             =    8,00000
                  0,93750
                  0,03125
                  -------
             =   (8,96875)10
Umrechnung in's fremde Zahlensystem

So, wie es keine Schwierigkeiten bereitet, gebrochene Zahlen aus dem Binär-oder Hexadezimalsystem in's dezimale zu konvertieren, bereitet auch die Gegenrichtung keine Probleme. Man fängt wie bei der 'normalen', ganzzahligen Methode an, und hört einfach nicht am Komma auf, sondern erst, wenn der Rest Real: NullNull wird.

    (12,125)10 = (?)2

    12,125 / 16 = 0,???  Rest: 12,125 - 0*16 = 12,125
    12,125 /  8 = 1,???  Rest: 12,125 - 1* 8 =  4,125
     4,125 /  4 = 1,???  Rest:  4,125 - 1* 4 =  0,125
     0,125 /  2 = 0,???  Rest:  0,125 - 0* 2 =  0,125      -- Queues als verkettete Liste: Anmerkung:Anmerkung:
     0,125 /  1 = 0,125  Rest:  0,125 - 0* 1 =  0,125    /
     0,125 *  2 = 0,25   Rest:  0,125 - 0/ 2 =  0,125 <-      z/(2^(-n)) = z*2^n
     0,125 *  4 = 0,5    Rest:  0,125 - 0/ 4 =  0,125    \    z*(2^(-n)) = z/2^n
     0,125 *  8 = 1,0    Rest:  0,125 - 1/ 8 =  0,000      --
                  |
                  +---> (01100,001)2

Man beachte die in der Queues als verkettete Liste: Anmerkung:Anmerkung erklärte Vereinfachung: Statt mit 1/2, 1/4, 1/8 etc. weiterzurechnen, kann man auch den (einfacheren) Kehrwert benutzen und Rechnen im Binärsystem: MultiplikationMultiplikation und Rechnen im Binärsystem: DivisionDivision austauschen. Zwischen der Stelle mit dem 'Stellenexponenten' '0' und '-1' (Andere Zahlensysteme: StellenwerteStellenwert im Binärsystem: '1' und '1/2') muss auch das Komma eingefügt werden!

    (8,96875)10 = (?)16

     8,96875 / 16 = 0,???   Rest: 8,96875 - 0* 16 = 8,96875
     8,96875 /  1 = 8,???   Rest: 8,96875 - 8*  1 = 0,96875
     0,96875 * 16 =15,???   Rest: 0,96875 -15/ 16 = 0,03125
     0,03125 *256 = 8.000   Rest: 0,03125 - 8/256 = 0,000
                    |
                    +---> (08,Der Zeichensatz des Schneider CPC: &F8 = 248F8)16

Noch eine weitere Vereinfachung ist bei den Nachkommastellen möglich: Statt den Rest zuerst mit LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
^(1), dann mit LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
^(2) usw. zu multiplizieren, um die nächste Ziffer zu bestimmen, kann man den Rest auch nach jedem Schritt um eine Stelle nach links schieben (durch Rechnen im Binärsystem: MultiplikationMultiplikation mit 'LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
') und dann quasi wieder die selbe Stelle Erklärung der Anschlussbelegung: Testtesten:

    (27.538)10 = (?)10  (normale 'Konversion')

    27,538 /  10 = 2,???   Rest: 27,538 - 2*  10 = 7,538
     7,538 /   1 = 7,???   Rest:  7,538 - 0*   1 = 0,538
     0,538 *  10 = 5,???   Rest:  0,538 - 5/  10 = 0,038
     0,038 * 100 = 3,???   Rest:  0,038 - 3/ 100 = 0,008
     0,008 *1000 = 8,000   Rest:  0,008 - 8/1000 = 0,000
                   |
                   +---> (27,538)10


    (27.538)10 = (?)10  (mit Verschieben nach Links)

    27,538 / 10 = 2,???   Rest: 27,538 - 2*10 = 7,538
     7,538 /  1 = 7,???   Rest:  7,538 - 7* 1 = 0,538
     0,538 * 10 = 5,380   Rest:  5,380 - 5* 1 = 0,380
     0,380 * 10 = 3,800   Rest:  3,800 - 3* 1 = 0,800
     0,800 * 10 = 8,000   Rest:  8,000 - 3* 1 = 0,000
                  |
                  +---> (27,538)10

Nach der 'Scheinwandlung' von Dezimal nach Dezimal als praktisches Beispiel die Wandlung in's hexadezimale:

    (10,650390625)10 = (?)16

     10,650390625 / 16 =  0,???    Rest: 10,650390625 -  0*16 = 10,650390625
     10,650390625 /  1 = 10,???    Rest: 10,650390625 - 10* 1 =  0,650390625
      0,650390625 * 16 = 10,40625  Rest: 10,40625     - 10* 1 =  0,40625
      0,40625     * 16 =  6,5      Rest:  6,5         -  6* 1 =  0,5
      0,5         * 16 =  8,000    Rest:  8,000       -  8* 1 =  0,000
                          |
                          +----> (0Operationen: BD5B / 349A / 349A:  FLO SUBA,A68)16

Valid HTML   Valid CSS