Forum: Mikrocontroller und Digitale Elektronik Warum schreibt man HEX-Angaben mit einem 0x davor?


von popi (Gast)


Lesenswert?

Hallo zusammen,

wer kann mir bitte erklären, was der Hintergrund der Abkürzung 0x als
"Präambel" vor einem HEX-wert bedeutet (bei C z.B.) oder eben $ bei
Assembler.

Steckt da etwas dahinter oder ist das einfach eine hintergrundlose
Absprache, aus der ein Assebmler bzw. ein Compiler erkennt, um was es
sich handelt?

Danke und Grüße

popi

von Thomas (Gast)


Lesenswert?

lass die Präambel halt weg und schau was passiert.
Thomas

von popi (Gast)


Lesenswert?

vermutlich wird das als dezimaler Wert interpretiert (kann jetzt leider
nicht mal auf die schnelle probieren)

Mir gehts aber nicht darum, ob ich es weglassen kann, sondern ob das 0x
für etwas besonderes steht, so wie I²C für Inter-Integrated Circuit
steht.

Also ob die Abkürzung aus einem tieferen Sinn abgeleitet wurde.

Grüße

popi

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

es ermöglicht dem Compiler zu erkennen was für eine Konstante jetzt
kommt. Gäbe es solche Präfixe nicht könntest du nur einen Typ
Konstanten verwenden.

Matthias

von Jürgen Berger (Gast)


Lesenswert?

hallo
das x steht für das x in hex, wie
das b in 0b... für binär steht.

Gruß
Jürgen

von Läubi (Gast)


Lesenswert?

Du kannst auch in Assembler schreiben 0xFF z.B. manche unterstützen auch
34h oder sowas, es sit einfach so der Compiler kann ja nicht raten was
du willst deswegen mußt du ihm einduetig sagen wie er die Zahl
interpretieren soll.

für Binär schreibt 0b011101, für hex halt 0x... dann kann man auf einen
blick unterscheiden was man vor sich hat.
Die 0 zeigt dem Compiler dabei warscheinlich an das eine Zahl folgt
(und kein String Literal).
Ich könnte mir auch vorstellen das das sone Art Wortlaut ist, so wie
X-Mas für Christmas, aber zero-X hm...

von bebibaer (Gast)


Lesenswert?

Bei C-compilern fangen Dezimalzahlen mit den Ziffern 1 bis 9 an,
Oktalzahlen mit einer führenden 0. Daher bedeutet die Ziffernfolge 010
nicht zehn sondern acht. Bei Hexzahlen hat man ein x nach der 0
eingeschoben, sodass der lexikalische Scanner eine Zahlenkonstante im
Quelltext immer an einer führenden Ziffer erkennt, wenn man von
Vorzeichen absieht.
Motorola hat für Hexzahlen in ihren Assemblern $ benutzt, Intel/Zilog
ein angehängtes h, gegebenenfalls mit einer führenden 0, damit z.B. FFh
nicht als Symbol erkannt wird.

von popi (Gast)


Lesenswert?

... das klingt alles gut und logisch!

Vielen Dank an Alle und liebe Grüße

popi

von Hagen (Gast)


Lesenswert?

ist im Grunde einfach eine relativ willkürliche Sprachdefinition.
Warum nimmt man + für Plus und - für Minus ? Man hätte ja auch # für
Plus nehmen können und M für Minus.

Gruß Hagen

von Klaus F. (Gast)


Lesenswert?

Es ist halt ganz einfach die ANSI Norm für C Compiler.

Bereits um Standardwerk  "The C Programming Language"  von Kernighan
Ritchie  (Jahr 1979)  definiert.

Hingegen ist "0b" für binär nicht klar genormt.

Klaus

Beitrag #5319161 wurde von einem Moderator gelöscht.
Beitrag #5319166 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.