Wie rechnen ich den um und warum steht da eine 0X davor?
Hey :)
wie setzt sich der Code zusammen bzw wie lese ich ihn? Es sind mehrere Zahlen da drin oder?
0x12796
besten Dank :)
4 Antworten
Hallo,
korrekterweise sollte die 'Zahl' wohl 0x12796h heißen.
Dabei handelt es sich um die Zahlendarstellung im Hexadezimal-System.
Das zählt - pro Symbolstelle - nicht bis 10 sondern bis 16 und verwendet für die Darstellung dann auch Buchstaben. Dabei ersetzt 'A' die 10, 'B' die 11 usw. bis 'F' = 15
Umwandlung :
0x0h = 0
0x9h = 9
0xAh = 10
0xFh = 15
0x12h = 1* 16 + 2 = 18
0x2Bh = 2* 16 + 11 = 43
0x1234h = 1 * ( 16 ^ 3) + 2 * (16 ^2 ) + 3 * (16^1) + 4 * (16^0)= 4660
und
0x12796h = 1* (16^4) + 2 * (16^3) + 7* (16^2) + 9* (16^1) + 6*(16^0) = 75670
falls Du das '^' nicht kennst:
16^0 = 1
16^1 = 16
16^2 = 16 * 16 = 256
16^3 = 16 * 16 * 16 = 4096
usw.
Es gibt ansonsten auch noch das Binär-System, geschrieben z.B.
0x010101b
Hier zählt jede Stelle 'nur' 0 oder 1. Entsprechend ist die Rechnung dann mit 2^0, 2^1, 2^2 usw.
Weniger gebräuchlich ist das Octal-System, da ist die Basis dann die Zahl 8.
Da in deiner Zahl aber eine '9' vorkommt, kann es sich nur um das Hexadezimalsystem handeln.
Ist eine Frage der Konvention.
'b' für Binär-Darstellung und 'B' für Hex-Darstellung von 11 (dezimal)
Ist aber m.W. in kleinster Weise genormt.
Ich kenne eben
0x00b - binär
0x00o - octal
0x00h - hexadezimal
In 'C' gibt es hingegen die Darstellung 0x00 (hex) und 0b00 (binär)
'Genormt' ist glaube ich nur die Darstellung
[17] = [11] = [21] = [10001]
10 16 8 2
Mit
0xYYb
0xYYo
0xYYh
wäre ich vorsichtig, mir ist kein System bekannt wo das zur Anwendung kommt (du darfst mir aber gerne vom Gegenteil überzeugen, lernen ist toll ;-))
Im C-Standard ist auf jeden Fall nur
YY // fuer DEC
0xYY // fuer HEX
0YY // für OCT
0bYY // für BIN (ab C++14, gab es bisher nicht, warum auch immer)
Definiert
ich kenne 0x nur als Präfix für Hex. und das h am ende ebenfalls, beides (also 0x56H) ist doppelt gemoppelt. ebenso kann man die basis (bei hex 16) auch klein hinschreiben, allerdings handelt es sich ja hier um Schreibweisen in der Programmierung und C/C++ akzeptiert, soweit ich weiß 0x . Ein Intel-Assembler akzeptiert ein H hintenangestellt. und motorola sachen akzeptiert ein $ vorangestellt. In C sollte mittlerweile alles gehen, statt nur 0x . aber probiers mal aus, ich denke, wenn du 0x56H eintippst, wird ein Fehler kommen, da er das H vermutlich nicht interpretieren kann, da mit 0x ja schon auf hex hingewiesen wurde und H nicht zu Hex Gehört
[..] Verbreitete Schreibweisen sind: 7216, 72hex, 72h, 72H, 72H, 0x72, $72, "72 und X'72' wobei das Präfix 0x und das Suffix h insbesondere in der Programmierung und technischen Informatik Verwendung finden.
"0x" beasgt das die folgende Zahl im Hex Format ist.
Die Hexadezimalzahl 12796 wird ins Dezimalsystem umgewandelt
Jede Stelle der Zahl hat den Wert der entsprechenden Potenz von 16;
die rechte Ziffer entspricht 16º=1, die zweite von rechts 16¹=16 usw.
Nimm jede Ziffer bzw. ihren Zahlenwert (A=10, B=11, ... )
mal mit der entsprechenden Potenz und summiere.
Gehe am besten von rechts nach links vor:
6: 6 · 1 = 6
9: 9 · 16 = 144
7: 7 · 256 = 1792
2: 2 · 4096 = 8192
1: 1 · 65536 = 65536
——————
75670
Dezimal = 75670
0x ist ein Prefix um Hexadezimalzahlen zu markieren.
0x010101b als Binär? Definitiv NICHT, wer sagt den das das "b" nicht Teil des Hex Codes ist? Binär wird mit "0b" gekennzeichnet, sowie Hex mit "0x"
Dein Beispiel wäre Dezimal 1052699, wenn man das "b" zum Hex Code interpretiert, anstatt der Binären 21 wenn man es 0b010101 schreibt. Großer Unterschied.