mikrocontroller.net

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


Autor: Hannes Weninger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#define 0b00000001 0x01
#define 0b00000010 0x02
#define 0b00000011 0x03
#define 0b00000100 0x04
.
.
.
#define 0b11111110 0xFE
#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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Trolliger,

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

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.