16進数に関する問題を出したのでその答えと解説です。
例1)10進数2,4,8,16,32をそれぞれ2進数で表現して下さい。
この答えは
| 2 | 10 |
| 4 | 100 |
| 8 | 1000 |
| 16 | 10000 |
| 32 | 100000 |
という答えになります。
2,4,8,16,32という数字の規則には気付きましたか?
これは2の階乗です。
つまり2進数において、下位の位から2の0乗、1乗、2乗…
と表現しているのです。
なので、2の10乗(1024)位までは何も考えずに分かる
ようになったほうがいいかもしれないです。
例2)2進数1111 1111と1 0000 0000を10進数と16進数で
それぞれ表現してみて下さい。
この答えは
1111 1111 → 10進数:255 16進数:FF
1 0000 0000 → 10進数:256 16進数:100
となります。
まず10進数の1 0000 0000を考えます。
下位の位から2進数の値は2の0乗、1乗、2乗となっていく
ので、1の場所を探します。
1となっている場所は2の8乗になる場所です。
なので答えは256になります。
次に1111 1111を考えます。
例1のように考えると2の0乗+1乗+2乗+3乗…となり
1+2+4+8+16+32+64+128=255
で答えが出ます。
でもこのやり方は慣れないと非常にめんどくさいです。
こういった全ての位が1の2進数の値を求めるときは、
?2進数に1を足す
?2の階乗の値を求める
??の値から1を引く
この手順で求めた方が早いです。
実際にやってみます。
?2進数に1を足す。
1111 1111に1を足します。
一番下の位に1を足すと、普通は2になりますが、2進数で
2は次の位に桁上がりします。
なので、桁上がりして0になり、次の位の1と桁上がりの1
になり、また桁上がりになります。
これが、何度も繰り返して答えは1 0000 0000となります。
?2の階乗の値を求める
1 0000 0000は2の8乗の場所が1になっているので256です。
??の値から1を引く
最初に1を足しているので、1を引いても元の値は変わりません。
なので、答えは
256-1=255
となります。
次は16進数の場合です。
まず、1111 1111です。
考え方ですが、16進数の0~Fは10進数では0~15です。
では、2進数では?
2進数では0000~1111が相当します。
なので、4桁で区切っていたのです。
ということで、1111 1111は16進数で「FF」となります。
このやり方だと、1 0000 0000はとても簡単ですね。
1は1、0000は0なので答えは「100」になります。
文章だけの説明で分かりにくかったですよね?
最後まで読んで頂いてありがとうございます。