Einstieg in Java und OOP
Einstieg in Java und OOP - Das Buch

Zahlensysteme

Um eine Zahlendarstellung von einem Zahlensystem in ein beliebiges anderes umwandeln zu können, bietet es sich an, zunächst die Zahl in das Dezimalsystem zu konvertieren und es anschließend vom Zehnersystem in das gewünschte Zahlensystem umzuwandeln.


Dazu ein Beispiel:

Umwandlung der Zahl A3B,39(12) in das 8er-System.

10
 * 12 2
 = 
1440

3
 * 12 1
 = 
36

11
 * 12 0
 = 
11

3
 * 12-1
 = 
0
,25
9
 * 12-2
 = 
0
,0625



1487
,3125(10)
1487
 : 8
 = 
185
  R: 7
185
 : 8
 = 
23
  R: 1
23
 : 8
 = 
2
  R: 7
2717
2
 : 8
 = 
0
  R: 2

0,3125
 * 8
 = 
2,5
0
,24
0,5
 * 8
 = 
4,0

2717
,24(8)


Anzumerken ist hierbei, dass man zur Ermittlung des Ganzzahlbereiches des Zielsystems den ganzzahligen Anteil der Dezimalzahl (hier: "1487") solange durch die Basis des Zielsystems (hier: "8") teilt, bis man als Ergebnis 0 erhält.
Bei der Berechnung der Nachkommastellen hingegen muss man theoretisch den Nachkommabereich solange mit der Basis des Zielsystems multiplizieren, bis der Nachkommabereich 0 wird. Dabei kann es allerdings vorkommen, dass man nie eine Null hinter dem Komma erhält. Dann treten zwangsweise Rundungsdifferenzen auf!


Gebräuchliche Spezialfälle:

Binärsystem:  1011 0111 0010
Hexadezimalsystem:B72
Binärsystem:  101 101 110 010
Oktalsystem:5562
Binär­system:  1011 0111 0010
Hexadezi­mal­system:B72

Binär­system:  101 101 110 010
Oktal­system:5562


Hier werden jeweils vier Ziffern aus dem Binärsystem zu einer Hexadezimalziffer zusammengefasst bzw. drei Binärziffern zu einer Oktalziffer. Möchte man nun vom Hexadezimalsystem in das Oktalsystem umrechnen, bietet es sich an, über das Binärsystem zu rechnen, statt wie im allgemeinen Fall zunächst die Dezimalzahl zu ermitteln und daraus die Oktalzahl zu berechnen.


Im folgenden Formular kann nun der hier vorgestellte allgemeine Algorithmus zur Umrechnung zwischen unterschiedlichen Zahlensystemen über das Zehnersystem getestet werden. Es sei allerdings darauf hingewiesen, dass das dezimale Zwischenergebnis ("1287,3125" im obigen Beispiel) in einer normalen numerischen JavaScript-Variable gespeichert wird und diese Zahlen nicht in beliebiger Genauigkeit und Größe aufnehmen kann. Dadurch können also Rundungsfehler auftreten.

Testen Sie hier den Algorithmus:


Koeffizienten
Basis
Präzision
von:

nach: