- 35 名前:デフォルトの名無しさん [04/08/24 00:34]
- winXP Home SP1にBCC5.5.1をインストールして、「猫でもわかるC言語プログラミング」
という本を読みつつ、C言語の勉強を始めてまだ3日なのですが どうにも理解できないことがあり、気になって先に進めません。 ----------------------------------- /* bit03.c */ #include <stdio.h> int main() { short a=10; printf(" a=%08X\n ~a=%08X\n",a,~a); return 0; } ----------------------------------- 上記を実行すると、符合なし16進法表示で以下の結果になります。 a=0000000A ~a=FFFFFFF5 「10」を16ビット表示すると(0000 0000 0000 1010)となり、それを16進に直すと「0xA」だから 「a=0000000A」になるのは分かります。 でも、(0000 0000 0000 1010)をビット反転した(1111 1111 1111 0101)を16進に直すと 「0xFFF5」だから「~a=0000FFF5」になると思ったのに 何故「~a=FFFFFFF5」になるのかが分かりません。 何を勘違いしてるのか分からなくて辛いです。 ご教示願えるとありがたいです。よろしくお願いします。
|

|