Frage

Vor kurzem war ich verwirrt von diese Frage . Vielleicht, weil ich nicht die Sprache Spezifikationen gelesen hat (es ist meine Schuld, ich weiß).

C99-Standard nicht sagen, was negative Zahlen Darstellung sollte Compiler verwendet werden. Ich dachte immer, dass der einzig richtige Weg negative Zahlen zu speichern Zweier-Komplement (in den meisten Fällen).

hier ist also meine Frage: kennen Sie einen Compiler heutigen, die standardmäßig ein implementiert Komplement oder Vorzeichen-Betrags-Darstellung? Können wir Standard-Darstellung mit einigen Compiler-Flag ändern?

Was ist der einfachste Weg, um zu bestimmen, welche Darstellung verwendet wird?

Und was ist C ++ Standard?

War es hilfreich?

Lösung

Ich denke, es ist nicht so sehr eine Frage, welche Darstellung der Compiler verwendet, sondern das, was Darstellung der zugrunde liegende Maschine verwendet. Der Compiler wäre sehr dumm sein, eine Darstellung holen nicht von der Zielmaschine unterstützt, da die Lasten des Aufwand für keinen Nutzen einführen würde.

Einige Prüfsumme Felder im IP-Protokoll-Suite Verwendung Einerkomplement, so vielleicht dedicated „Netzwerk-Beschleuniger“ -Typ CPU: s. Es implementieren

Andere Tipps

Während Zweier-Komplement Darstellung ist bei weitem der häufigste, es ist nicht die einzige ( einige ). Die C- und C ++ Normungsgremien wollen nicht nicht-Zweierkomplement-Maschinen erfordern eine nicht-native Darstellung zu emulieren. Daher weder C nicht C ++ ein bestimmtes negatives Integer-Format benötigen.

Dies führt zu dem undefinierten Verhalten von bitweise Operationen auf unterzeichnet Typen.

Die UNISYS 2200 Serie die Ergänzung Mathe eigenen implementiert, ist immer noch in verwenden. Sie können mehr darüber in den folgenden Fragen

lesen

Exotische Architekturen die Normungsgremien über Pflege

Gibt es nicht-Zweier-Komplement-Implementierungen von C?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top