2017-02-21 3 views
-3

私が持っている目標は、オペレーティングシステムが2の補数の基本アーキテクチャを使用しているかどうかを調べることです。これに入ると、私は1の賛辞が0、(0000 0000)と(1111 1111)の2つの異なる表現をしていたことを思い出した。今私はまだコード内でこの程度の2進数を扱っている。このアイデアが違いを伝えるのに役立つかどうか誰かが私に教えてくれたら私はホッピングしていました。もしそうなら、私はこのコードの書き方についていくつかのヒントを使うことができました。 ありがとう基本アーキテクチャの2の補数表現

答えて

2

プラットフォームのタイプの実装について学ぶための明らかな方法は、対象のオブジェクトのオブジェクトバイトを印刷することです。代わりに

int a = 5, b = -a; 

const unsigned char * p = (const unsigned char *)&a; 
const unsigned char * q = (const unsigned char *)&b; 

for (size_t i = 0; i != sizeof(int); ++i) 
    fprintf(stdout, "%02X ", p[i]); 
fputc('\n', stdout); 

for (size_t i = 0; i != sizeof(int); ++i) 
    fprintf(stdout, "%02X ", q[i]); 
fputc('\n', stdout); 
+0

[デモ](http://melpon.org/wandbox/permlink/y37WGXlqFBtf3dQ9) –

+0

だから私はあなたが私が前に話題のアイデアを使用して、この権利を理解していた場合、しかし:数とその負0の2つの値を表示します。2つの境界が127〜-128、Onesが127〜-127であることを示していますか? –

関連する問題