質問<1740>
「「コンピューター」」
日付 2004/6/12
質問者 パソ好き


次の問いの中のnは数31211を表す。
 1 何ピットあればn個の状態を区別できるか。
 2 nを2バイト長の2進数に変換し、さらに16進
  表記せよ。
 3 整数の表現単位2バイト、負の数は2の補数
   で表現すると定める。一nの表現を16進表記せ
   よ。

大変ご面倒でしょうが、宜しくご指導ください。
計算式なども具体的に記載していただくと、
後の勉強に役立ちたいのでお願いします。

お便り
日付 2004/6/15
回答者 naoya


n=31211 (10)

\(2^{14}\) < n < \(2^{15}\)であるから、
n個の状態を表現するには最低15ビット必要である。
(一般的に、kビットで\(2^{k}\)個の状態を表現できます。)
2進数に変換するにはひたすら2で割り、
次々と求まる余りを逆順に書けばできます。
16進数の時も同様です。

31211 (余り) 31211 (余り)
15605 1 1950 B
7802 1 121 E
3901 0 7 9
1950 1 0 7
975 0
487 1
243 1
121 1
60 1
30 0
15 0
7 1
3 1
1 1
0 1

n=01111001 11101011 (2)
=79 EB (16)

また、2進表示をしたから4桁ごとに区切ると、
それが16進表示で一桁に相当します。
0111 1001 1110 1011
↓ ↓ ↓ ↓
7 9 E B
これより、2進表示から変換することも可能です。

補数による負数表現
16ビットでの補数表示は、次のように作ります。
00000001 00000000 00000000
-) 01111001 11101011
---------------------------
-n = 10000110 00010101 (2進補数表示)
こいつを16進数に直してやると(計算省略)
   -n = 86 15 (16進補数表示)
となります。

もう一つ裏技として、
2進数表示でnの1と0を反転させ、その後1を加えるという方法もあります
(何故これが成立するのかはご自分で考えてみてください)

こんな感じでよろしかったでしょうか。