2013-05-11 6 views
7

アーキテクチャがC++で1または2の補数表現を使用するかどうかを検出する最も信頼性の高い方法は何ですか?C++で1または2の補数アーキテクチャを検出しますか?

+3

これらが唯一のオプションの場合は、 '(-1)&1'をチェックしてください。 –

+1

@BasileStarynkevitch私は異機種のスーパーコンピュータアーキテクチャを扱っており、各バイナリファイルの先頭にそれを記録して、それを読み取ろうとするアーキテクチャと互換性があるかどうかを知りたいと思います。 – Vincent

+0

今日のエンジニアリングはそれほど大きくないか大きなエンジニアではありませんか?そして、基本的にはシリアライゼーションを行っていますが、今日は信頼性の高いライブラリを用意しています。[s11n](http://s11n.net/) –

答えて

4

あなたは心配する必要はありません - あまりにも多くのものが存在していないそこにマシンを補完:)

しかし、最も簡単な方法は、比較するために、「-1」〜0であるかもしれません。

+0

実装定義の動作ではありませんか? –

+6

@ R.MartinhoFernandes:もちろんです。それらは2の補数の実装では等しく、1の補数(または符号の大きさ)の実装ではないため、どの表現が使用されているかをテストするために使用できます。 –

+0

これをコンパイル時にプリプロセッサで検出できますか? –

関連する問題