2012-10-10 15 views
6

trovo nella norma:Lo standard C++ richiede una macchina binaria?

Le rappresentazioni di tipi interi devono definire i valori mediante l'uso di un puro sistema di numerazione binario

Ma la mia comprensione è che questo non è un requisito che C++ deve essere implementato su macchine basate sulla base 2 nell'hardware; in altre parole, questo sembra essere solo un requisito per ciò che il programmatore vedrà.

Lo standard C++ richiede una CPU binaria oppure un'implementazione C++ valida può essere implementata su macchine ternarie o decimali?


piccolo informazioni di fondo: nella storia, ci sono già state computer con i decimali, ternari, o computer in cui un byte C++ sarebbe lungo 36 bit (PDP-10)

+0

Non vedo perché no. – cdhowie

+0

È difficile vedere come ad es. gli operatori bit a bit funzionerebbero su un'architettura non binaria, a meno che non ci fosse un qualche tipo di macchina virtuale binaria in mezzo, nel qual caso l'architettura sottostante è discutibile. –

+1

Questo passaggio nello standard mi sembra abbastanza chiaro. Richiede una macchina capace di fare rappresentazioni binarie di numeri. In altre parole, un tipico computer digitale moderno, o almeno uno che può emulare numeri binari. –

risposta

6

Anche se mai direttamente indicato nello standard, esiste una regola "come se" che si applica essenzialmente a tutti i requisiti dello standard C++ (e C).

In altre parole, ti è permesso di infrangere qualsiasi regola tu voglia, purché produci gli stessi effetti osservabili esternamente come se avessi seguito la regola come detto. Sebbene non indicato nelle norme stesse, questa regola è esplicitamente dichiarata nello standard Rationale per lo standard C. Per quanto ne so, non c'è alcuna logica razionale per lo standard C++, ma i due sono strettamente correlati tra loro che vedo un piccolo problema nell'applicare la regola ad entrambi.

+1

Credo che ci sia un foot note che cita" as-if "sotto 1.9.1. –

+0

Non conosco gli standard precedenti, ma in C++ 11 § 1.9/1 questo è affermato direttamente: 'Le descrizioni semantiche in questo standard internazionale definiscono una macchina astratta non parametrica parametrizzata. Questo standard internazionale non impone alcun requisito sulla struttura delle implementazioni conformi. In particolare, non è necessario copiare o emulare la struttura della macchina astratta. Piuttosto, sono necessarie implementazioni conformi per emulare (solo) il comportamento osservabile della macchina astratta come spiegato di seguito – JohnCand

Problemi correlati