www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Im binäres Format ausgeben


Autor: Volkmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kollegen,

kann man unter C eine im binären Format ausgeben lassen?

Gibt es, wie bei Hex = x oder Dezimal = d, auch einen Buchstaben für
das binäre Format?

Danke.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meines wissens nach (un meiner helpfile nach) kann printf (das meinst du
doch wohl) das nicht direkt. sollte aber kein problem sein, soetwas
selber zu machen

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du sowas: 0b11111111 = 0xFF = 256 ?
oder meinst du, dass der compiler statt eine HEX Datei eine Binary
Datei erzeugt ?
Welchen Compiler benutzt du ?
Wenn du WinAVR benutzt kann man das einfach in dem Makefile umstellen,
da sind sogar die beispielwerte angegeben.

MfG Axos

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Axos
kleiner schreibfehler 0xFF=255 und nicht 256 ;-))

Autor: Volkmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@axos

ja ich meine schon den ersten fall.

möchte eine dezimale zahl als binäre zahl darstellen.

hast du nen kleinen tipp, wie ich an dieses problem rangehen kann?

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder willst du z.B. 0xFF im binären Format in einen string schreiben ?
Dann kann dir wohl nur ne (einfache) routine helfen.

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@T.Stütz:
Hast recht, Null ist ja auch ne zahl. Danke

Autor: Volkmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne möchte schon entweder ne dezimale oder auch ne hexadezimale zahl in
eine binäre zahl umwandeln und darstellen.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char string[8];
for (int i=0;i<8;i++,zahl>>1)
if (zahl&1) string[i]=1 else string[i]=0;

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach lieber string[9] und am ende noch ein string[8]=0

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Volkmer:
du testest ob in die zahl 128 rein geht.
Wenn ja dann ziehst du 128 von der dezimalen zahl ab und setzt das
erste bit auf 1 ansonsten ist das einste bit 0.
Dann testest du auf 64, dann auf 32 und immer so weister bis zu 1.

Beispiel:


if (zahl > 128)
{
  string[0] = 1;
  zahl-=128;
}
if (zahl > 64)
{
  string[1] = 1;
  zahl-=64;
}
.
.
.
kann man sicher viel schöner machen aber so ist es wenigstens leicht
verständlich.

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobi
Ok, du bist mir zuvorgekommen, aber ich glaube meine ist leichter zu
verstehen für den Anfang.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist es ganz sicher. aber auch einiges mehr schreibarbeit.
eine schleife wäre doch wohl noch drin gewesen :)

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achtung: MSB ist in string[7]
Bsp: 0x23 => "11000100"

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf deutsch:
Höchstwertiges Bit ist in string[7] ;)

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach ich doch... ich schiebe doch rechts raus
@axos: bei dir ists in string[0]

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einige kleine Fehler behoben:

char string[9]; // Stringlänge!
string[8] = '\0'; // abschließende Null

for (int i = 0; i < 8; i++, zahl <<= 1)  // <<= !
  if (zahl & 0x80)
    string[i] = '1'; // Hochkommata
  else
    string[i] = '0'; // Hochkommata

Dann sollte es besser funktionieren. MSB landet so in string[0].

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.