Wie rechnen ich den um und warum steht da eine 0X davor?

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.


J0eSpivy  18.10.2016, 10:35

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.

0
AnReRa  18.10.2016, 11:06
@J0eSpivy

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
0
reddox86  19.11.2016, 23:59
@AnReRa

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

0
SirNik  18.10.2016, 14:22

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

0
MikaDaBoss2  23.10.2016, 02:00

scheiß die Wand an, so viel Mathe.

0
Darstellung von Hexadezimalzahlen

[..] 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.

Aus https://de.wikipedia.org/wiki/Hexadezimalsystem

"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.