So drucken Sie Binärzahlen über printf [duplicate]
Lesezeit: 2 Minuten
registrierter Nutzer
Mögliches Duplikat:
Gibt es einen printf-Konverter zum Drucken im Binärformat?
Hier ist mein Programm
#include<stdio.h>
int main ()
{
int i,a=2;
i=~a;
printf("a=%d\ni=%d\n",a,i);
return 0;
}
Die Ausgabe ist
a=2
i=-3
Ich möchte, dass dies im Binärformat gedruckt wird. Es gibt %x, %o und %d, die für Hexadezimal-, Oktal- und Dezimalzahlen stehen, aber was ist für das Drucken von Binärzahlen in printf?
stackoverflow.com/questions/111928/…
– Cnicutar
16. Juni 2011 um 13:58 Uhr
Willst du wirklich binär? Hexadezimal ist oft genauso gut (oder sogar besser), da es alle 4 Bits in eine Hexadezimalziffer abbildet, wodurch Sie sowohl eine kompakte als auch ausdrucksstarke Darstellung der Binärdaten erhalten.
– Kerrek SB
16. Juni 2011 um 14:01 Uhr
@Kerrek sagst du wirklich, dass es nutzlos ist, eine Zahl in ihrer binären Darstellung zu sehen? Versuchen Sie, eine Gleitkommazahl in Hexadezimalzahlen zu analysieren: P
– Vinicius Kamakura
16. Juni 2011 um 14:19 Uhr
@hexa: Ja, das mache ich die ganze Zeit. Ich habe einen ULP-Vergleich für lange Doubles geschrieben, den ich gerne in Hex debuggt habe. Hex wirklich ist nur ein wenig binär komprimiert.
– Kerrek SB
16. Juni 2011 um 14:22 Uhr
Binär kann nützlich sein, um zu sehen, wie bitweise Speicherzuordnungen festgelegt sind, wenn sie entsprechend dokumentiert sind und Sie die Werte auf die gleiche Weise wie im Dokument anzeigen möchten. Lassen Sie uns niemanden daran hindern, seine Daten in dem Format zu haben, das seinen Bedürfnissen am besten entspricht.
– CDH
4. September 2019 um 21:30 Uhr
Vinicius Kamakura
printf() unterstützt das nicht direkt. Stattdessen müssen Sie Ihre eigene Funktion erstellen.
Etwas wie:
while (n) {
if (n & 1)
printf("1");
else
printf("0");
n >>= 1;
}
printf("\n");
Dies druckt die binäre Darstellung rückwärts
– David Heffernan
30. September 2012 um 19:44 Uhr
@David Heffernan Wie können wir schreiben, welche Plattformen sowohl 32-Bit als auch 64-Bit unterstützen?
– kapildit
19. Oktober 2012 um 6:02 Uhr
@hexa make function & Rekursion verwenden, um die Druckreihenfolge zu korrigieren. Wird es hilfreich sein?
– kapildit
19. Oktober 2012 um 6:07 Uhr
@kapilddit – warum um alles in der Welt würdest du versuchen, deine Antwort zu Hexas Antwort hinzuzufügen? Sie sind schon lange genug dabei, um zu wissen, wie Stack Overflow funktioniert.
– jww
22. Dezember 2014 um 6:01 Uhr
Korrigiert über Rekursion stackoverflow.com/a/27627015/1079110.
– Dänisch
23. Dezember 2014 um 19:47 Uhr
Obwohl ANSI C diesen Mechanismus nicht hat, ist es möglich, itoa() als Abkürzung zu verwenden:
stackoverflow.com/questions/111928/…
– Cnicutar
16. Juni 2011 um 13:58 Uhr
Willst du wirklich binär? Hexadezimal ist oft genauso gut (oder sogar besser), da es alle 4 Bits in eine Hexadezimalziffer abbildet, wodurch Sie sowohl eine kompakte als auch ausdrucksstarke Darstellung der Binärdaten erhalten.
– Kerrek SB
16. Juni 2011 um 14:01 Uhr
@Kerrek sagst du wirklich, dass es nutzlos ist, eine Zahl in ihrer binären Darstellung zu sehen? Versuchen Sie, eine Gleitkommazahl in Hexadezimalzahlen zu analysieren: P
– Vinicius Kamakura
16. Juni 2011 um 14:19 Uhr
@hexa: Ja, das mache ich die ganze Zeit. Ich habe einen ULP-Vergleich für lange Doubles geschrieben, den ich gerne in Hex debuggt habe. Hex wirklich ist nur ein wenig binär komprimiert.
– Kerrek SB
16. Juni 2011 um 14:22 Uhr
Binär kann nützlich sein, um zu sehen, wie bitweise Speicherzuordnungen festgelegt sind, wenn sie entsprechend dokumentiert sind und Sie die Werte auf die gleiche Weise wie im Dokument anzeigen möchten. Lassen Sie uns niemanden daran hindern, seine Daten in dem Format zu haben, das seinen Bedürfnissen am besten entspricht.
– CDH
4. September 2019 um 21:30 Uhr