C steht für int in der Basis 2 [duplizieren]

8

Ich lerne C und ich habe kürzlich herausgefunden, dass wir ganze Zahlen auf verschiedene Arten darstellen können, wie zum Beispiel:

(Angenommen, i hat einen "lesbaren" Wert von 512 .) Hier sind die Darstellungen:

Dezimal:

%Vor%

Oktal:

%Vor%

Hexadezimal:

%Vor%

In der Basis 2 (oder Binärdarstellung) ist 512 1000000000 . Wie schreibe ich das in C?

Etwas wie int i = 1000000000b ? Das ist lustig, aber leider akzeptiert kein C-Compiler diesen Wert.

    
technology 20.06.2011, 15:50
quelle

4 Antworten

9

In C (und ich glaube C ++) gibt es keine Binärdarstellung für Zahlen. Für die angezeigte einfache Nummer können Sie jedoch eine Verknüpfung

verwenden %Vor%     
pmg 20.06.2011, 15:53
quelle
28

Der Standard beschreibt keine Möglichkeit, "binäre Literale" zu erstellen. Die neuesten Versionen von GCC und Clang unterstützen diese Funktion jedoch mit einer Syntax, die der Hex-Syntax ähnelt, außer dass b anstelle von x :

ist %Vor%

Wie bereits erwähnt, blockiert die Verwendung solcher binärer Literale die C- und C ++ - Compiler von Visual Studio. Sie sollten also darauf achten, wo und wie Sie sie verwenden.

C ++ 14 (ich weiß, ich weiß, das ist nicht C) standardisiert die Unterstützung für binäre Literale.

    
zneak 20.06.2011 15:53
quelle
11

Dies ist in C nicht möglich.

Aber du hast gesagt, du lernst C ++. In C ++ können Sie BOOST_BINARY verwenden, bis C ++ 0x erlaubt benutzerdefinierte Literale .

Bitte beachten Sie jedoch, dass es sehr einfach ist, sich für die Übersetzung von hex in binär und zurück zu entscheiden.

Ordnen Sie für eine gegebene Binärzahl einfach die Ziffern in Vierergruppen zusammen und lernen Sie dies

%Vor%

Nach ein paar Versuchen, diese Übersetzung in Ihrem Kopf zu machen, werden Sie sich damit sehr wohl fühlen. (Natürlich könnten Sie das gleiche mit Oktal machen, aber hex ist noch kompakter als oktal.)

Für Ihr konkretes Beispiel:

%Vor%     
jason 20.06.2011 15:53
quelle
2

Dies ist in Standard C nicht möglich. Die Sprache erlaubt keine Angabe von Integer-Literalen in Binärdateien.

    
David Heffernan 20.06.2011 15:52
quelle

Tags und Links