So drucken Sie Binärzahlen über printf [duplicate]

Lesezeit: 2 Minuten

Benutzeravatar des registrierten Benutzers
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

Benutzeravatar von Vinicius Kamakura
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:

  char buffer [33];
  itoa (i,buffer,2);
  printf ("binary: %s\n",buffer);

Hier ist der Ursprung:

itoa in der cplusplus-Referenz

Es ist kein Standard-C, aber K&R hat die Implementierung im C-Buch erwähnt, also sollte es ziemlich üblich sein. Es sollte in stdlib.h sein.

  • falls / bei Ihnen nicht funktioniert, hier ist eine schnelle Roll-your-own-Implementierung @ strudel.org.uk/itoa

    – Evandrix

    18. Oktober 2013 um 17:02 Uhr

1406130cookie-checkSo drucken Sie Binärzahlen über printf [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy