2013-05-11 12 views
7

Jaki jest najbardziej niezawodny sposób na wykrycie, czy architektura używa reprezentacji uzupełnień w C++?Wykrywanie architektury uzupełnień jednego lub dwóch w C++?

+3

Jeśli są to jedyne opcje, zaznacz '(-1) i 1'. –

+1

@BasileStarynkevitch Pracuję z heterogenicznymi architekturami superkomputerów i chcę to zarejestrować na początku każdego pliku binarnego, aby wiedzieć, czy jest on zgodny z architekturą, która spróbuje go odczytać. – Vincent

+0

Czy mała czy wielka endiancja nie ma dziś większego znaczenia? Zasadniczo robisz serializację, a istnieją biblioteki, które dziś mogą to robić niezawodnie ..... [s11n] (http://s11n.net/) i inne –

Odpowiedz

4

nie powinna martwić - nie ma zbyt wiele z nich uzupełniają maszyny tam :)

Ale najłatwiej może być porównanie „-1” z ~ 0.

+0

Czy nie jest to zachowanie zdefiniowane w ramach implementacji? –

+6

@ R.MartinhoFernandes: Oczywiście, że tak. Będą one równe w implementacji z dwoma dodatkami, a nie z implementacjami one-complement (lub wielkości światła), a więc mogą być używane do testowania, która reprezentacja jest używana. –

+0

Można to wykryć za pomocą procesora wstępnego w czasie kompilacji. –