Forum: Mikrocontroller und Digitale Elektronik binäre Zahlen in C


von Hannes Weninger (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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

von jp (Gast)


Lesenswert?

0xc3 = bin 11000011
das 0b scheint es nicht in c zu geben zumindistens unterstützen nciht 
alle Compiler dieses Format

also in Hex umrechnen

von Klaus (Gast)


Lesenswert?

#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


von Andy (Gast)


Lesenswert?

    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

von Rahul, der Trollige (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

Hallo Trolliger,

schöne Idee, geht aber nicht.
"invalid Macro name" dürfte noch die harmloseste Compiler-ERROR Meldung 
dazu sein.

von Rahul, der Trollige (Gast)


Lesenswert?

>schöne Idee, geht aber nicht.

war auch nur eine Idee...
Man kann sie aber dadurch realisieren, dass man nicht "0b...", sondern 
"Ob..." schreibt.

von Klaus (Gast)


Lesenswert?

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

von Rahul, der Trollige (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.