2012-10-10 14 views
6

finde ich in der Norm:Erfordert der C++ - Standard eine binäre Maschine?

Die Darstellungen von integralen Typen Werte durch die Verwendung eines reinen binären Zahlensystem

Aber mein Verständnis ist, dass dies nicht erforderlich, dass C definieren soll ++ sein muss implementiert auf Maschinen, die auf Basis 2 in Hardware basieren; mit anderen Worten, dies scheint nur eine Voraussetzung dafür zu sein, was der Programmierer sehen soll.

Erfordert der C++ - Standard eine binäre CPU oder könnte eine gültige C++ - Implementierung auf ternären oder dezimalen Maschinen implementiert werden?


winzige Hintergrundinfo: in der Geschichte hat es bereits Rechner mit Dezimalzahlen, Ternäre gewesen, oder Computer, auf denen ein C++ Byte 36 Bit lang (PDP-10)

+0

Ich sehe nicht warum nicht. – cdhowie

+0

Es ist schwer zu sehen, wie z.B. Bitweise Operatoren würden an einer nicht-binären Architektur arbeiten, sofern Sie nicht irgendeine Art von binärer virtueller Maschine dazwischen haben, in welchem ​​Fall die zugrundeliegende Architektur strittig ist. –

+1

Diese Passage im Standard scheint mir ziemlich klar zu sein. Es erfordert eine Maschine, die Binärdarstellungen von Zahlen machen kann. Mit anderen Worten, ein typischer moderner digitaler Computer oder mindestens einer, der Binärzahlen emulieren kann. –

Antwort

6

Obwohl nie sein würde, direkt im Standard angegeben, gibt es eine "als ob" -Regel, die für im Wesentlichen alle Anforderungen in der C++ (und C) -Standard gilt.

Mit anderen Worten, Sie dürfen jede Regel brechen, die Sie wollen, solange Sie die gleichen extern beobachtbaren Effekte erzeugen, als wären Sie der Regel wie angegeben gefolgt. Obwohl nicht in den Standards selbst angegeben, ist diese Regel explizit in der Rationale für den C-Standard angegeben. Soweit ich weiß, gibt es keine übereinstimmende Begründung für den C++ - Standard, aber die beiden sind eng genug verwandt, dass ich wenig Problem bei der Anwendung der Regel auf beide sehe.

+1

Ich glaube, es gibt eine Fußnote, die" as-if "unter 1.9.1 erwähnt. –

+0

Ich weiß nichts über frühere Standards, aber in C++ 11 § 1.9/1 heißt es direkt: 'Die semantischen Beschreibungen in dieser Internationalen Norm definieren eine parametrisierte nichtdeterministische abstrakte Maschine. Diese Internationale Norm stellt keine Anforderungen an die Struktur von konformen Implementierungen. Insbesondere müssen sie die Struktur der abstrakten Maschine nicht kopieren oder emulieren. Vielmehr müssen konforme Implementierungen (nur) das beobachtbare Verhalten der abstrakten Maschine emulieren (siehe unten) – JohnCand

Verwandte Themen