Gast
#139814
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.
|
Anzeige
|
Im binäres Format ausgeben
Gast
#139814
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.
Gast
#139815
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
Gast
#139816
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
Gast
#139817
@Axos kleiner schreibfehler 0xFF=255 und nicht 256 ;-))
Gast
#139818
@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?
Gast
#139819
Oder willst du z.B. 0xFF im binären Format in einen string schreiben ? Dann kann dir wohl nur ne (einfache) routine helfen.
Gast
#139820
@T.Stütz: Hast recht, Null ist ja auch ne zahl. Danke
Gast
#139821
ne möchte schon entweder ne dezimale oder auch ne hexadezimale zahl in eine binäre zahl umwandeln und darstellen.
Gast
#139822
char string[8]; for (int i=0;i<8;i++,zahl>>1) if (zahl&1) string[i]=1 else string[i]=0;
Gast
#139823
mach lieber string[9] und am ende noch ein string[8]=0
Gast
#139824
@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.
Gast
#139825
@Tobi Ok, du bist mir zuvorgekommen, aber ich glaube meine ist leichter zu verstehen für den Anfang.
Gast
#139826
ist es ganz sicher. aber auch einiges mehr schreibarbeit. eine schleife wäre doch wohl noch drin gewesen :)
Gast
#139827
Achtung: MSB ist in string[7] Bsp: 0x23 => "11000100"
Gast
#139828
auf deutsch: Höchstwertiges Bit ist in string[7] ;)
Gast
#139829
mach ich doch... ich schiebe doch rechts raus @axos: bei dir ists in string[0]
Gast
#139830
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 |
Anzeige
|