zsys0b.png
Edit v1.200 from 2007-09-19 to 2008-06-16 by Team

Fachbereich IT/Zahlensysteme

Hier erfahren Sie, welche Zahlensysteme und Formate es gibt, wie sie funktionieren und wie man mit ihnen umgeht. Zu alle dem wird hier noch erläutert, wie man zwischen den Zahlensystemen umrechnet.

Edit v1.100 from 2004-10-07 to 2008-06-10 by CMi+NLu+TSc

Zahlenformate

Hier wird dargestellt wie man eine Zahl im Speicher ablegt!

Gleitkommazahlen

Vorwort:
Gleitkomma Zahlen sind die Zahlen mit dem der Computer mathematische Operationen durchführt.
Die Standarddarstellung der Gleitkommazahlen ist in der IEE754 geregelt.
Dies war eine Aufgabe aus meinem Eignungstest.

Hier noch eine Erklärung (Legende), was die Farben der Tabellen für die Gleitkommazahl zu bedeuten haben:

= Vorzeichen Das Vorzeichen. (0 für Plus und 1 für Minus) Exponente Die Exponente der Gleitkommazahl. , bzw. + Entweder das Komma, oder ein Operator. Mantisse Die Nachkommastellen der Gleitkommazahl Zahlensystem H für Hexadezimal, B für Binär und D für Dezimal

Umrechnung von 16,4 in die 32Bit Gleitkomma-Darstellung

Vorzeichen
Positiv (+) = 0B
Negativ (-) = 1B
Mantisse
= + 16 , 4 D  
= + (1*16) + (0*8) + (0*4) + (0*2) + (0*1) + (0*1/2) + (1*1/4) + (1*1/8) + (1*1/16) + (1*1/32) + (1*1/64) + (1*1/128) + (1*1/256) + (1*1/512) + (1*1/1024) + (1*1/2048) + (1*1/4096) + (1*1/8192) + (1*1/16384) + (1*1/32768) + (1*1/65536) + (1*1/131072) + (1*1/262144) + (1*1/524288) + (1*1/1048576) D  
= + (1*23) + (0*22) + (0*21) + (0*20) + (0*2-1) + (1*2-2) + (1*2-3) + (1*2-4) + (1*2-5) + (1*2-6) + (1*2-7) + (1*2-8) + (1*2-9) + (1*2-10) + (1*2-11) + (1*2-12) + (1*2-13) + (1*2-14) + (1*2-15) + (1*2-16) + (1*2-17) + (1*2-18) + (1*2-19) + (1*2-20) D  
= + 1000 , 0110 0110 0110 0110 0110 B
 (M1)
Vorzeichen
Exponent

Ab hier geht die Darstellung zwei Wege. Je nach dem ob die sogenannte Normalisierung der Mantisse zur Variante 0, oder zur Variante 1, führen soll. Um die jeweilige Variante zur realisieren, muß das Komma so lange nach rechts (-) oder nach links (+) verschoben werden, bis 0,... bzw. 1,... vorne steht. Das Verschieben um 1 Stelle nach Rechts, vermindert (-), bzw. nach Links, erhöht (+), den Exponenten um Eins.

Variante 0,
= + 0 , 1000 0110 0110 0110 0110 0110 B *2+4D

Wir haben das Komma im (M1) um 4 Stellen nach Links (+) von
     1000,0110 ... auf ,1000 0110
     
verschoben und damit 2+4D erhalten.

Oder
Variante 1,
= + 1 , 0000 1100 1100 1100 1100 110 B *2+3D

Wir haben das Komma im (M1) um 3 Stellen nach Links (+) von
     1000,0110 ... auf 1,000 0110
     
verschoben und damit 2+3D erhalten.

Die Mantisse ist in beiden Fällen der Normalisierung fast gleich. Die Variante mit dem Ziel 1, hat eine Stelle mehr für die Genauigkeit zur Verfügung. Der Exponent unterscheidet sich ebenfalls, durch um Eins höhere bzw. niedere Potenz, welche sich im Faktor =2 niederschlägt.

Hier greifen zwei Umrechnungen zusätzlich ein, um die Möglichkeiten der Gleitkomma-Darstellung zu verbessern:

  1. Exponenten kleiner Null werden dadurch ermöglicht, in dem zu dem ermittelten Wert, in diesem Fall +4D, 127D dazugezählt werden.
    D.h. der mögliche kleinste Exponent kann 2-127D sein!
    In unserem Beispiel wird dieser zu: 2127D+4D = 2131D = 21000 0011B
  2. Die Ungenauigkeit hängt von der Anzahl der Stellen in der Mantisse ab, d.h. bei dieser Art beträgt sie 2-23D.
    Man kann diese verdoppeln, wenn man vereinbart die generell auftretende führende Stelle 0,1B bzw. 1,0B der Mantisse nicht mit zu notieren und damit allen Stellen der Mantisse die Möglichkeit zu geben, um eine Stelle nach links zu rutschen und damit die Ungenauigkeit auf 2-24D zu vermindern.

    Damit wird aus: 

    = 0,1 000 0110 0110 0110 0110 011B Variante 0,
    = 0000 1100 1100 1100 1100 110B
    bzw.
    = 1, 0000 1100 1100 1100 1100 11B Variante 1,
    = 0000 1100 1100 1100 1100 110B

    Nachteil: Die Zahl NULL gibt es nicht mehr direkt. Sie wird durch den kleinsten Exponenten 1*2-127D angenähert!


Ergebnis

Als Ergebnis erhält man die binäre Darstellung der Mantisse, des Vorzeichens und des Exponenten in der Variante 1, und Variante 0, von der dezimalen Zahl 16,4.

31
 S
 0

 0
30              23
 E E E E  E E E E
 1 0 0 0  0 1 0 0
 bzw.
 1 0 0 0  0 0 1 1
    Exponent
22                                                00
 M M M M  M M M M  M M M M  M M M M  M M M M  M M M
 0 0 0 0  1 1 0 0  1 1 0 0  1 1 0 0  1 1 0 0  1 1 0

 0 0 0 0  1 1 0 0  1 1 0 0  1 1 0 0  1 1 0 0  1 1 0
                    Mantisse


 Variante 0,

 Variante 1,
Vorzeichen

Eine Gleitkommmazahl in eine Dualzahl umrechnen

Gegeben ist die 32Bit-Gleitkommazahl in ihrer binären Darstellung mit 1100 0011 0111 0110 0100 0000 0000 0000B, so wie sie im Speicher bzw. in einer Datei vorliegt.

31
 S
 1
30              23
 E E E E  E E E E
 1 0 0 0  0 1 1 0
    Exponent
22                                                 00
 M M M M   M M M M  M M M M  M M M M  M M M M  M M M
 1 1 1 0   1 1 0 0  1 0 0 0  0 0 0 0  0 0 0 0  0 0 0
                      Mantisse
Vorzeichen

Zuerst sind ein paar Umrechnungen nötig.

  1. Vorzeichen:

    0B = Positiv (+)
    1B = Negativ (-)
  2. Als erstes muss man die 0,1B (1/2D) vor die Mantisse setzen.

    =
    =
    1110 1100 1000 0000 0000 000B
    0,1111 0110 0100 0000 0000 0000B
  3. Nun muss man die Exponenten zurückrechnen. 21000 0110B = 2134D

    dieses minus die 127 d.h. 2134D-127D = 27D

= + 0 , 1111 0110 0100 0000 0000 0000 B *27D
= + 1111 011 , 001 B  
= + (1*26) + (1*25) + (1*24) + (1*23) + (0*22) + (1*21) + (1*20) + (0*2-1) + (0*2-2) + (1*2-3) D  
= + (1*64) + (1*32) + (1*16) + (1*8) + (0*4) + (1*2) + (1*1) + (0*1/2) + (0*1/4) + (1*1/8) D  
= + 123 , 125 D  
Edit v1.011 from 2002-09-27 to 2011-05-23 by Team

Zahlensysteme

zsys0a.jpg

Jede Zahl wird mit einem Suffix versehen.
Wenn nur eine Zahl da steht (also ohne Buchstabe), ist das eine Dezimalzahl.


  • Dual bzw. Binär als Typkennzeichen wird das B verwendet, z.B.: 0101 1100B
  • Dezimal als Typkennzeichen wird das D verwendet, z.B.: 100D
  • Hexadezimal als Typkennzeichen wird das H verwendet, z.B.: 02CH
Tabelle 01: (/105/, S. 69 Vergleich zwischen Zahlensystemen)
Dezimal Binär Hexa-
dezimal
  Dezimal Binär Hexa-
dezimal
0D 0000 0000B 00H   16D 0001 0000B 010H
1D 0000 0001B 01H   17D 0001 0001B 011H
2D 0000 0010B 02H   18D 0001 0010B 012H
3D 0000 0011B 03H   19D 0001 0011B 013H
4D 0000 0100B 04H   20D 0001 0100B 014H
5D 0000 0101B 05H   21D 0001 0101B 015H
6D 0000 0110B 06H   22D 0001 0110B 016H
7D 0000 0111B 07H   23D 0001 0111B 017H
8D 0000 1000B 08H   24D 0001 1000B 018H
9D 0000 1001B 09H   25D 0001 1001B 019H
10D 0000 1010B 0AH   26D 0001 1010B 01AH
11D 0000 1011B 0BH   27D 0001 1011B 01BH
12D 0000 1100B 0CH   28D 0001 1100B 01CH
13D 0000 1101B 0DH   29D 0001 1101B 01DH
14D 0000 1110B 0EH   30D 0001 1110B 01EH
15D 0000 1111B 0FH   31D 0001 1111B 01FH
Edit v1.000 from 2002-09-27 to 2008-06-11 by KHe+TSc

Dezimal

Das Dezimalsystem hat die Basis 10 und ist besteht damit aus den Ziffern 0 bis 9.

Edit v1.012 from 2002-09-27 to 2008-06-11 by KHe+HSc+TSc

Dual bzw. Binär

Um auf der Ebene der Maschinensprache arbeiten zu können, sollten wir erst mal wissen, welche Informationen innerhalb des Computers sind. Jeden Tag treffen wir auf irgendwelche Zahlen, die eine bestimmte Form haben. Der Computer rechnet mit einem anderen Zahlensystem als wir Menschen, nämlich mit dem Dualsystem und das besteht aus Bits. Das Dualsystem hat die Basis 2 und besteht aus den Ziffern 0 und 1. Mit 4 Bits, einem Nibbel, kann man eine Zahl zwischen 0 und 15 bilden. Das sind genau die Anzahl von Bits mit denen man den Wert einer hexadezimalen Ziffern beschreiben kann. Zwei Nibbels oder 8 Bits sind ein Byte.

Tabelle 02: Logarithmisches Bandmaß zur Basis 2 und Wertermittlung bei einer binären 16Bit-Zahl
Zahl 1 0 1 1   0 1 0 0   1 0 1 0   1 1 1 1 B H
Position
Potenz
Faktor
215 214 213 212   211 210 29 28   27 26 25 24   23 22 21 20 D
dezimaler
Faktor
                                    1D 01H
2D 02H
4D 04H
8D 08H
16D 10H
32D 20H
64D 40H
128D 80H
256D 01 00H
512D 02 00H
1.024D 04 00H
2.048D 08 00H
4.096D 10 00H
8.192D 20 00H
16.384D 40 00H
32.768D 80 00H

Das verwendete Beispiel einer 16Bitigen Zahl ergibt damit:

= 1011 0100 1010 1111B
= 1*32.768 + 1*8.192 + 1*4.096 + 1*1024 + 1*128 + 1*32 +1*8 +1*4 +1*2 +1*1D
= 46.255D
Edit v1.010 from 2005-08-10 to 2008-06-12 by MJa+TSc

Hexadezimal

Das Hexadezimalsystem hat die Basis 16 und ist aus dem Wert 0 bis 16. Aber ab dem Wert 10 wird es nicht mehr in Zahlen (0 bis 9), sondern in Buchstaben (A bis F) angegeben: A=10, B=11, C=12, D=13, E=14, F=15.

Tabelle 08: Logarithmisches Bandmaß zur Basis 16 (Hexadezimal)
Stelle 7. 6.   5. 4.   3. 2.   1. 0.  
Zahl 0 1   0 0   0 0   4 6 H
Position
Potenz
Faktor
167 166   165 164   163 162   161 160  
dezimaler
Faktor
                    Einer
16er
256er
4096er (4kByte'er)
65.536er (64 kByte'er)
1.048.576er (1 Mega'er)
16.777.216er (16 Mega'er)
268.435.456er (256 Mega'er)

Um eine Hexadezimalzahl in eine Dezimalzahl umzuwandeln, muss man die einzelnen Ziffern mit der jeweiligen Potenz der Basis multiplizieren. Der Exponent der Basis entspricht der Stelle der Ziffer. Die Hexadezimalzahl 01 00 00 46H ist Dezimal 16.777.286D.

Rechnung:

= 0*167 + 1*166 + 0*165 + 0*164 + 0*163 + 0*162 + 4*161 + 6*160
= 16.777.286D

Umrechnungen zwischen den verschiedenen Zahlensystemen

Edit v1.030 from 2002-09-27 to 2008-06-12 by KHe+HSc+TSc

Umrechnung von Binär in Dezimal und umgekehrt

Wir müßen Dezimalzahlen in Dualzahlen umwandeln, um mit dem Computer zu arbeiten. Wir können aber auch Dualzahlen in Dezimalzahlen umstellen. (/109/, S. 13 Rechnen im Dualsystem)

Tabelle 03: Umwandlung von Binär in Dezimal
= 1001 1110B
= 1 0 0 1 1 1 1 0B
= 1*27 + 0*26 + 0*25 + 1*24 + 1*23 + 1*22 + 1*21 + 0*20
= 1*128D + 0*64D + 0*32D + 1*16D + 1*8D + 1*4D + 1*2D + 0*1D
= 128D+16D+8D+4D+2D
= 158D

Bei diesem Beispiel ist die Dualzahl 1001 1110B vorhanden. Es wird überlegt, welche Zahl in die Dezimalzahl hinein passt. Danach werden alle Einsen zusammen addiert.


Lösung: 1001 1110B = 128+16+8+4+2=158D

Tabelle 06:Umwandlung von Dezimal in Binär
= 100D
= (1*64) + (1*32) + (0*16) +   (0*8) + (1*4) + (0*2) + (0*1) D
= (1*26) + (1*25) + (0*24) +   (0*23) + (1*22) + (0*21) + (0*20) D
= 1 1 0   0 1 0 0 B

Jetzt ist die Dezimalzahl 100D vorhanden. Man muss rechnen welche Zahlen in die Dezimalzahl hinein passt. Es muss entweder genau die Zahl sein oder eine kleinere Zahl, aber auf keine Fall eine größere Zahl. Dieses Beispiel wird nur bei zweistelligen Zahlen verwendet. Die Rechnung bei Tabelle 05 wird häufiger benutzt.


Lösung: 100D = 64+32+4 = 110 0100B

Edit v1.030 from 2002-09-27 to 2008-06-12 by KHe+TSc

Umrechnung von Binär in Hexadezimal und umgekehrt

Tabelle 04: Umwandlung von Binär in Hexadezimal
= 1011 1100B
= 16er Halbbyte   1er Halbbyte
= 23 22 21 20   23 22 21 20
= 1 0 1 1   1 1 0 0B
= 1*8 0*4 1*2 1*1   1*8 1*4 0*2 0*1
= 8+2+1=11D=0BH   8+4=12D=0CH
= 0BCH

Hier ist noch einmal eine Dualzahl 1011 1100D vorhanden. Die 8 Bits werden in 2 mal 4 Halbbyte (16er und 1er) geteilt. Anschließend werden alle Einsen als Dezimalzahl dargestellt und danach in Hexadezimal umgerechnet.

Lösung: 1011B = 11D = 0BH , 1100B = 12D = 0CH = 1011 1100B = 0BCH


Tabelle 07: Umwandlung von Hexadezimal in Binär
= D6H
= 16er Halbbyte   1er Halbbyte
= 13   6
= 1*8 1*4 0*2 1*1   0*8 1*4 1*2 0*1
= 8+4+1=13D   4+2=6D
= 1101 0110B

In diesem Beispiel wird die Hexaldezimalzahl D6H verwendet. Die 8 Bits werden wieder in Halbbyte (16er und 1er) geteilt. Dann muss man überlegen welche Zahl in die Hexadezimalzahl hinein passt und dies dann hin schreiben.


Lösung:D6H = 8+4+1=13; 4+2=6 = 1101 0110B

gotop.gif Nach Oben