2013-05-11 7 views
7

Qual è il modo più affidabile per rilevare se l'architettura utilizza la rappresentazione del complemento a uno o due in C++?Rileva l'architettura del complemento a uno o due in C++?

+3

Se queste sono le uniche opzioni, controllare '(-1) & 1'. –

+1

@BasileStarynkevitch Io lavoro con architetture di supercomputer eterogenei e voglio registrare che all'inizio di ogni file binario sapere se è compatibile con l'architettura che proverà a leggerlo. – Vincent

+0

oggi non conta molto o molto poco l'endianità? E fondamentalmente stai facendo serializzazione, e ci sono librerie per farlo in modo affidabile oggi ..... [s11n] (http://s11n.net/) e altri –

risposta

4

Non dovrebbe devi preoccuparti - non ci sono troppi quelli completano macchine là fuori :)

Ma la cosa più semplice potrebbe essere quella di confrontare "-1" con ~ 0.

+0

Non è un comportamento definito dall'implementazione? –

+6

@ R.MartinhoFernandes: certo che lo è. Saranno uguali su un'implementazione a due complementi, e non su implementazioni complemento a complemento (o di dimensioni del segno), e quindi possono essere utilizzate per testare quale rappresentazione viene utilizzata. –

+0

È possibile rilevare questo con il pre-processore in fase di compilazione. –

Problemi correlati