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


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

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


お便り2004/6/15
from=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を加えるという方法もあります
(何故これが成立するのかはご自分で考えてみてください)

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