• ベストアンサー

おしえてください<(_ _)>

C言語を学んでいる初心者です。ビット補数演算子という分野で反転させた値にできるそうなんですがint型で整数は7を反転させて10進数で表すと-8になると書いてありました。私が2進数から10進数に直したら+の数になりました。 詳しい方教えてください<(_ _)><(_ _)>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

int型の7は、2進数で表すと、"00000111"。 それを反転すると、"11111000"。 それを10進数に表す時、先頭の1バイト目は符号を表すので、この場合、"-"(マイナス。0だったら"+"。)。 残りの7ビットは、以下のように表すので、"-8"となります。 0000010 2 0000001 1 0000000 0 1111111 -1 1111110 -2 1111101 -3 1111100 -4 ..... 1111000 -8 参考URL : http://www.cc.kyoto-su.ac.jp/~yamada/pB/bit.html

その他の回答 (2)

回答No.3

 まずはあなたのPCの、すべてのプログラムー>アクセサリーー>電卓を起動して下さい。  表示ー>プログラマを選択するとプログラム電卓になります。  左側を10進、32ビットCPUならDWORD、64ビットCPUならQWORDを選択して下さい。  反転はNot演算です。  7キー、Notキーを押して下さい。-8と表示が出ます。再度Notキーを押すと7に戻ります。  16進数、NotキーでFFFFFFF8(DWORDの場合)、7、FFFFFFF8と切り替わります。  

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

#include <stdio.h> main(){ int x; x = ~7; printf("%d\n",x); } >私が2進数から10進数に直したら+の数になりました。 何をしたらどうなりましたか?

関連するQ&A