基本情報技術者試験の最初の勉強でビットの説明がでてきました。ChatGPTさんに尋ねてみると以下のような回答が返ってきました。
F13ビットとは何ですか?



ビット(bit)は、コンピューターが扱う情報の最小単位です。binary digit(バイナリ・デジット)の略で、0または1の2つの状態を持ちます。 データの基本単位ですべてのデジタルデータ(文字、画像、音声、動画など)は、ビットの組み合わせで表されます。
1ビットは0か1が入る箱
1ビットという箱の中には0か1の値が入ります。ただ、1ビットだけでは0か1しか表すことができないので、スイッチのOn/Off程度しか表すことができません。


- どうやって文字や画像を表すの?
-
このビットの箱をいくつも用意することで、文字や画像、音声、動画などのデジタルデータを表します。
nビットで表せるもの
さて、1ビットだと0か1の2通りしか表せません。これが2ビットだとどうなるでしょう?正解は1ビットで2通りなので、2
ビットだと2通り×2通りで4通りの数を表すことができます。




同じように3ビットの時を考えると、2(通り)×2(通り)×2(通り)=8通りを表すことができます。ここまでをまとめると、n ビットの時、2×2×…と2がn回でてくることになります。
なので次のことがいえます。
nビットの時、表すことができるものは2n個
4ビットで表せるもの(16進数の数値)
普段、私たちの生活で使っているのは10進数です(0~9までの10個の数値で1桁目を表し、9の次が繰り上がる)。16進数というのは9の次が10ではなく、Aになります。Aの次はB、C、D…と続き、Fまでが1桁目になります。Fの次の数が10になります。0~9の10個の数字とA~Fまでの6個のアルファベットの合計16個の文字を使って1桁目を表すので、16進数と呼ばれます。
nビットの時に表すことができるものは2n個に当てはめると 24=16となり16進数は4ビットで表すことができます。
16進数は何に使うの?
16進数はITの世界では色々なものに使われています。下記に例を示します。
インターネット
インターネットで使われているIPアドレスではIPv4(Internet Protcol version 4)では32ビットで表されていますが、あまりにもわかりにくいので、8ビットごとに「.(ドット)」で区切って、0~255の10進数の4つの組み合わせで表されます(例.192.168.0.1)。


32ビットでIPアドレスを表すので、IPアドレスは232個(約43億個)存在できる計算になります。ただ、現在では約43
億個のIPアドレスでも枯渇しており、IPv6(Internet Protocol version 6)と次世代のIPアドレスへ移行して始めています。
IPv6では128ビットで表すことになっており、割り当てられるIPアドレスは2128=232+32+32+32なので43億×43億×43億×43億=約340澗(かん)とほぼ無限に近いと考えられています。
IPv6
ここまで話してようやく16進数の話になりますが、IPv6ではIPv4で0~255の10進数で表していた代わりに、16進数を用います。128ビットを16ビットごとに「:(コロン)」で区切ります。16進数は上述したように0~fで示すので各コロンの間の文字は0~ffffのいずれかになります。(例.2001:0db8:0000:0000:3456:0000:0000:0000)
IPv6アドレスを128ビット(2進数)へ
上記2進数の128ビットで計算するのは、ちょっと面倒なのでChatGPTに聞いてみましょう。



IPv6のアドレス”2001:0db8:0000:0000:3456:0000:0000:0000”
を2進数で表すとどうなりますか?



IPv6アドレス 2001:0db8:0000:0000:3456:0000:0000:0000
を2進数で表すと、次のようになります。
16ビット(4桁の16進数)の4桁の塊を2進数に変換していきます。
各16ビット(4桁の16進数)を2進数に変換すると:
| 16進数 | 2進数 | |||
|---|---|---|---|---|
| 2001 | 0010 | 0000 | 0000 | 0001 |
| 0db8 | 0000 | 1101 | 1011 | 1000 |
| 0000 | 0000 | 0000 | 0000 | 0000 |
| 0000 | 0000 | 0000 | 0000 | 0000 |
| 3456 | 0011 | 0100 | 0101 | 0110 |
| 0000 | 0000 | 0000 | 0000 | 0000 |
| 0000 | 0000 | 0000 | 0000 | 0000 |
| 0000 | 0000 | 0000 | 0000 | 0000 |
求めた2進数表記をまとめると…
0010 0000 0000 0001 0000 1101 1011 1000 0000 0000 0000 0000 0000 0000 0000 0000
0011 0100 0101 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
またはスペースを省略すると…
00100000000000010000110110111000000000000000000000000000000000000011010001010110000000000000000000000000000000000000000000000000
とIPv6アドレスを128ビットで表すことができました。
10進数を2進数へ変換、16進数を2進数へ変換する方法は以下記事をご参照ください。


コメント