Oktal direkt in Hexadezimal umrechnen

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Von Oktal ins Hexadezimal.

Zum Beispiel (71257305)oct

Hexadezimal rechnen.

Wir rechnen hexadezimal von links nach rechts.

Beginne mit der 7 und verdoppel dreimal in Hexadezimal.

0xE

0x1C

0x38

nächste Ziffer ist 1

0x38+0x1=0x39

Ergebnis dreimal in Hexadezimal verdoppeln.

0x72

0xE4

0x1C8

nächste Ziffer ist 2

0x1C8+0x2=0x1CA

Ergebnis dreimal in Hexadezimal verdoppeln.

0x394

0x728

0xE50

nächste Ziffer ist 5

0xE50+0x5=0xE55

Ergebnis dreimal in Hexadezimal verdoppeln.

0x1CAA

0x3954

0x72A8

nächste Ziffer ist 7

0x72A8+0x7=0x72AF

Ergebnis dreimal in Hexadezimal verdoppeln,

0xE55E

0xCABC

0x39578

nächste Ziffer ist 3 0x39578+0x3=0x3957B Ergebnis dreimal in Hexadezimal verdoppeln.

0x72AF6

0xE55EC

0x1CABD8

nächste Ziffer ist 0

0x1CABD8+0x0=0x1CABD8

Ergebnis dreimal in Hexadezimal verdoppeln.

0x3957B0

0x72AF60

0xE55EC0

letzte Ziffer ist 5

0xE55EC0+0x5=0xE55EC5

(71257305)oct = 0xE55EC5 .

Auch wenn die Frage schon vier Jahre alt ist: Man kann zwar theoretisch die Zahl ohne Umweg direkt vom Oktal ins Hex-System umrechnen, aber mit dem Umweg über das Binärsystem geht es doch wesentlich einfacher.

Ich nehm einfach mal die Zahl, die Hexbaumfall genommen hat. 71257305 im Oktalsystem. Für jede Ziffer im Oktalsystem gibt es eine dreistellige Zahlenkombination im Binärsystem. Das kann man ohne rechnen direkt übersetzen.

7   1   2   5   7   3   0   5
111 001 010 101 111 011 000 101

Die Binärziffern in Dreierblocks kann man jetzt so aufteilen, dass die Ziffern immer in Viererblocks stehen und kann sie dann wieder ohne rechnen ins Hex-System übersetzen.

1110 0101 0101 1110 1100 0101
E    5    5    E    C    5

Das geht meiner Meinung nach deutlich einfacher, als dieses ewig lange rumgerechne.

Schon wenn Du das Wort "rechnen" benutzt, hast Du Dich ja auf ein System festgelegt (auch Dein Gehirn ist Hardware)! Da es keinen Rechner gibt, der rein "oktal" rechnet, gibt es auch keine "direkte" Wandlung. Am besten versteht man es, wenn man mit Computersprachen arbeitet, da man:
- schon bei der Ein- und Ausgabe den neutralen Typ "String" verwenden muss
- immer gezwungen wird "typkompatibel" zu arbeiten
- bei mehr als den üblichen 15 (Dezimal-)Stellen gezwungen wird, sich "echte Gedanken für sauberen Algorithmus" zu machen
- leicht die Rechenzeit stoppen kann

Einige Compiler erlauben zwar die begrenzte direkte Eingabe basisfremder Zahlen (0xFF, $F1 usw.), ABER da kümmert sich der Compiler nur einmalig um die Wandlung.

Interessant wäre ABER die Frage:
a) Welches ist der schnellste Algorithmus in ASM (Maschinensprache), der kontinuierlich mindestens 64 stellige okt-Zahlen direkt nach Hex wandeln kann?!
Da gibt es hoch optimierte Befehle wie "Shift Links/rechts" (Schieben aller BIN-Bits um x nach LINKS bedeutet mathematisch 2^x)...
Manchmal ist auch ein scheinbarer Umweg schneller, da einige Befehle weniger Taktzyklen brauchen als andere...

Nur wenn der Nutzen den Aufwand für eine neue Hardware rechtfertigen würde, wäre auch eine 1-Takt-Hardware denkbar... Dafür gibt es aber andere Foren wie FPGA, Mikrocontroller, Assembler...

b) Welches ist der einfachste Algorithmus für einen Menschen mit Papier & Bleistift?

Wenn Du mehr als die üblichen 15 Stellen online wandeln willst (denn bis dahin findet man im Netz hunderte Anfänger-Programme oder "Tools")
siehe http://www.lamprechts.de/gerd/php/RechnerMitUmkehrfunktion.php
Befehl FromBase2Base(x=Argument zum Wandeln, y=Quellbasis, z=Zielbasis)
(intern rechnet der immer nach Dezimal um, da Quell- & Zielbasis hier variabel sind)

viele Stellen von Basis 8 nach Basis 16 umrechnen - (Mathematik, binär, Zahlensysteme)

Wie Du im Bild siehst, werden aus 49 Zeichen später 37.
Da der Bruch 49/37 nicht teilbar ist (Periode 324), kann man sich auch nicht einzelne Zeichen herauspicken und direkt wandeln, sondern kommt um eine "Komplettwandlung" (Dreierbitgruppen in Viererbitgruppen also mindestens Binär) nicht herum!

0

Was möchtest Du wissen?