Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Hexadezimale Zahlen

Hexadezimale Zahlen sind Zahlen, die nicht wie gewohnt zur Basis 10 (Dezimalsystem) dargestellt werden, sondern zur Basis 16. So kann man die ersten 16 Zahlen - 0 bis 15 - mit einer einzigen "Ziffer" darstellen, so wie es im Dezimalsystem 10 Ziffern für die ersten 10 Zahlen gibt.

Darstellung

Da die Basis dieses Zahlensystems 16 ist, kann ein einzelnes Zeichen im Hexadezimalsystem einen dezimalen Zahlenwert bis 15 annehmen. Da unsere Ziffern allerdings nur die Zahlen 0-9 abdecken, werden in der Regel die Buchstaben a bis f hinzugezogen. Dabei entspricht das a dem dezimalen Wert 10 und das f entsprechend 15.

Jede Ziffer einer Hexadezimalzahl steht für die entsprechende Anzahl an 16er-Potenzen, die in der Zahl enthalten sind. Hier ein kleines Beispiel:

0x14a = 1*16^2 + 4*16^1 + 10*16^0 = 1*256 + 4*16 + 10 = 330

Eine Konvention ist, wie auch hier im Beispiel, vor der Hexadezimalzahl "0x" zu schreiben, damit man erkennt, dass es sich um eine solche handelt.

Verwendung allgemein

Hexadezimale Zahlen finden große Anwendung in Computerbereichen, nicht nur bei Scratch, da ein Computer mit einem Zahlensystem mit 16 Ziffern sehr leicht umgehen kann - ähnlich wie bei den Binärzahlen, die nur aus 2 Ziffern bestehen. So werden Farben im Internet oft mit Hexadezimalzahlen dargestellt (normalerweise mit einem führenden #), z.B. #556b2f für Olivgrün.

Beim Programmieren mit komplexeren anderen Programmiersprachen, wie Java oder C++, sind Hexadezimalzahlen das ein oder andere Mal auch sehr hilfreich, in den verschiedensten Situationen.

Verwendung in Scratch

Auch in Scratch können Hexadezimalzahlen verwendet werden. Sie starten stets mit dem Präfix "0x", danach folgt unmittelbar die Zahl selbst. Ob bei der Zahl Groß- oder Kleinbuchstaben verwendet werden, spielt dabei keine Rolle.

Hexadezimale Zahlen lassen sich (im Gegensatz zu Gleitkommazahlen) meist nicht direkt in Zahlenfelder eingeben. Allerdings kann man sie in Variablen speichern und diese anschließend wie Zahlenwerte verwenden. Nach jeder Rechenoperation auf der Variablen wird sie wieder ins Dezimalsystem zurückkonvertiert.

Es lassen sich auch Hexadezimalzahlen in Cloud-Variablen speichern. Dadurch kann man platzsparende Kodierungen für Cloud-Listen o.Ä. entwickeln, worauf in dem Artikel Cloud-Variablen im Detail eingegangen wird.

Umrechnung

Es gibt verschiedene Wege, Zahlen vom Dezimal- ins Hexadezimalsystem zu konvertieren und umgekehrt. Im Folgenden wird jeweils ein Weg vorgestellt.

Für die Konvertierung vom Dezimal- ins Hexadezimalsystem wird oft, wie bei anderen Stellenwertsystemen auch, ein Divisionsalgorithmus verwendet. In diesem Fall nimmt man sich dazu die zu konvertierende Dezimalzahl und teilt sie (mit Rest) sukzessiv durch die neue Basis 16, bis sie am Schluss 0 wird. Dann werden die Reste (von unten nach oben) hintereinander aufgeschrieben. Dabei werden die Zahlen ab 10 durch die entsprechenden Buchstaben ersetzt.

Beispiel:

Dezimalzahl: 712

712 : 16 = 44 Rest 8

44 : 16 = 2 Rest 12

2 : 16 = 0 Rest 2

Also lautet die Hexadezimalzahl: 0x2c8

Zur Umrechnung vom Hexadezimalsystem ins Dezimalsystem werden die einzelnen Ziffern mit ihrer entsprechenden 16er-Potenz multipliziert und anschließend aufsummiert. Dabei startet man stets mit der Potenz 16^0 für das hinterste Zeichen und erhöht den Exponenten je Schritt nach links um 1.

Beispiel:

0x2c8 = 2*16^2 + 12*16^1 + 8*16^0 = 2*256 + 12*16 + 8 = 712

Programmbeispiel

Natürlich lässt sich die Konvertierung auch in Scratch umsetzen. Für die Konvertierung ins Hexadezimalsystem wird im folgenden Beispiel einfach der Divisionsalgorithmus implementiert:

setze [hex v] auf [] // leer, kein Leerzeichen
wiederhole bis <(dez) = [0]>
setze [hex v] auf (verbinde (Zeichen (((dez) mod (16)) + (1)) von [0123456789abcdef])(hex))
setze [dez v] auf ([abrunden v] von ((dez) / (16))
end
setze [hex v] auf (verbinde [0x] (hex))

Für die umgekehrte Konvertierung nutzt man am besten die Eigenschaft aus, dass Scratch automatisch Hexadezimalzahlen ins Dezimalsystem konvertiert, sobald man Rechenoperationen auf sie ausführt, zum Beispiel:

setze [dez v] auf ((hex) + (0))



Code zum Einbinden ins Forum:
[wiki=de:Hexadezimale Zahlen]Hexadezimale Zahlen[/wiki]