質問<1740>2004/6/12
次の問いの中の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を加えるという方法もあります (何故これが成立するのかはご自分で考えてみてください) こんな感じでよろしかったでしょうか。