Hallo, hätte noch eine Frage und zwar wie ich binäre Zahlen in C angebe, Das wird anscheinend nicht so oft benötigt, da ich nicht viel darüber gefunden habe. Mir ist schon klar dass ich binäre Zahlen auch in einem anderen Format darstellen kann aber ich würds wegen der Übersichtlichkeit binär benötigen. x = 0b11000011; geht nicht. Vielen Dank!!!!! lg Hannes
@Hannes: Das hängt vom Compiler ab. Manche Embedded-C-Compiler unterstützen diese (wie Rahul aber schon "anmerkte" alles andere als übersichtliche) Schreibweise, es ist jedoch nicht C-Standard und deshalb werden es die meisten Compiler nicht unterstützen. Schreib es lieber mit Bit-Shift-Operationen. Das ist dann übersichtlich.
0xc3 = bin 11000011 das 0b scheint es nicht in c zu geben zumindistens unterstützen nciht alle Compiler dieses Format also in Hex umrechnen
#define INT16U unsigned int INT16U x ; // ein etwas kurzer Variablenname, aber warum nicht x = 0xC3 ; // das entspricht deiner Fragestellung // Es gibt auch Compiler, die verstehen deine Syntax mit 0b........ // z.B. von ImageCraft // das ist aber nicht ANSI Standard. // und schöne Grüsse an den Trolligen, der macht ja immer so hilfreiche // Postings, super. // Klaus
Um das Übersichtlich zu halten gibs Kommentar. Mach das nicht so Kompliziert verwende Hexadezimal, bei dir jetzt x = 0xC3 oder als einfache Dezimalzahl und der Compiler macht draus was du brauchst. Ciauii
>// und schöne Grüsse an den Trolligen, der macht ja immer so hilfreiche >// Postings, super. zumindest weiß er, worum es dem Fragesteller geht... >// Klaus kein Kommentar... Wie wäre es denn damit:
1 | #define 0b00000001 0x01
|
2 | #define 0b00000010 0x02
|
3 | #define 0b00000011 0x03
|
4 | #define 0b00000100 0x04
|
5 | .
|
6 | .
|
7 | .
|
8 | #define 0b11111110 0xFE
|
9 | #define 0b11111111 0xFF
|
wäre eine schöne Fleissarbeit...und könnte man vermutlich durch eine Tabellenkalkulation erzeugen lassen und als binaer.h einfügen.
Hallo Trolliger, schöne Idee, geht aber nicht. "invalid Macro name" dürfte noch die harmloseste Compiler-ERROR Meldung dazu sein.
>schöne Idee, geht aber nicht.
war auch nur eine Idee...
Man kann sie aber dadurch realisieren, dass man nicht "0b...", sondern
"Ob..." schreibt.
Klar, so ging's, ist aber nicht toll les- und einprägbar, mit dem Ohhh statt Null. Besser wäre doch gleich nur b00000011 oder aber B_00000011 als #define für alle 256 Werte. Was machen wir aber, wenn jemand auch bis 2^16-1 oder 2^32-1 das braucht ? Wird ein bischen lang dann...
>Wird ein bischen lang dann...
Ja, und? Ich kann hexadezimal "denken"...
16bit oder sogar 32bit breite Zahlen erhöhen die Übersichtlichkeit
vermutlich noch stärker...
Die defines sollten aber mit Hilfe eines Programms sehr einfach erzeugt
werden können.