2進数の基礎

コンピューターの世界では、すべてのデータを2進数であらわしています。2進数というのは、1桁で 0か1を使い表現しています。

2進数左は普段使う10進数。

0は0、1は1です。

1桁では、0か1なので 2通りになります。このコンピューターのデータ最小単位を 1ビットといいます。

2は10、3は11、そしてまた桁上りします。3桁なら3ビット、4桁なら4ビットとなっていきます。

0と1の数字の組み合わせ・並びをビット列といいます。

コンピューターで2進数が使われるのは、0と1の2通りがあれば、電圧が強いか弱いかの電気信号に対応させて扱うことができるからです。

8bit

1ビットでは2通りしか表せませんが、ビット数が増えると表現できるものが増えてきます。

コンピューターの世界では、1ビットを8つ並べた 8ビットを 1バイトとしています。2進数で8桁になります。8bitをひとまとまりとして オクテットということもあります。この 8bitというのは、最も基本的な単位として用いられます。

8bitで表せるのは 2の8乗で0~255までの256通りになります。

ネットワークの規格であるイーサネットの速度を表すbpsでビット、ハードディスクの容量を表す単位でバイトが使われています。

32bit・64bit

2進数は、桁が上がれば それだけ表せるデータの量が増えることになります。

そのため、32bitや64bitというのは、

  • 2の32乗・・4,294,967,296
  • 2の64乗・・18,446,744,073,709,551,616

CPUやOSの32bitや64bitというのは、端的にいえば一度に処理できるデータの幅や量になります。ビット幅ともいいます。

ビット幅が大きいと、それだけ一度に多くの処理を行うことができ、速度も向上します。CPUやOSというのは、8bit→16bit→32bit→64bitと進化してきています。

24bit カラー

コンピューターは色も2進数で表現します。

例えばオレンジなら、11111111.10100101.00000000、のようになります。

  • 2の24乗・・16,777,216

16,777,216通りの組み合わせがあります。

ディスプレイには、ドットやピクセルという点がたくさんあり構成されています。このひとつのドットに何ビットの情報をもたせているかで表示できる色の種類が決まります。

  • ハイカラー・・1ドットに16bit、65,536色
  • フルカラー・・1ドットに24bit、16,777,216色

現在のディスプレイの多くは、24bit フルカラーとよばれるものです。パソコンやディスプレイで使われるRGBは このbit数で色彩を表現しています。

文字コード

コンピューターは、2進数の数字の組み合わせで文字も表現します。

例えば 「あ」なら、1100000.1000010、「T」なら、1010100、など。

2進数の数字と、文字やアルファベット・記号を対応させたものを、文字コードといいます。この組み合わせ表を利用して、パソコンの画面上に文字や記号を表示させることができます。

文字コードは 8bit(1バイト)、16bit(2バイト)などで作られています。

  • 8bit、2の8乗・・・256通り
  • 16bit、2の16乗・・・65,536通り

文字コードは、8bitのものとして ASCII、16bitのものとして Shift_JISなどがあります。

アルファベットを用いる英語圏などでは ASCIIでも対応できますが、日本語のように、ひらがな、カタカナ、漢字など文字の種類が多い場合は、16bitは必要になります。様々な言語に対応した 4バイトのUTF-8などもあります。

10進数での表記

コンピューターの世界では 2進数が使われるのですが、これをそのまま表記していたら分かりづらくなります。そのため、普段使うもののいくつかは 2進数が10進数に変換されて表記されています。

代表的なものには IPアドレスがあります。

例えば 192.168.1.1というプライベートIPアドレスがあるとします。これは 8bitが4つのオクテットに分かれ 32bitになっています。

2進数では、11000000.10100100.00000001.00000001、となります。

さすがにこれでは分かりづらいので、2進数を10進数に変換して表示しています。

16進数での表記

16進数は 0~9、A~Fの16種類の数字とアルファベットで表記します。

1桁で16種類、16通り表現できます。

16進数

16進数ということが分かるように、数字の先頭に 0xと付けることがあります。Windowsのエラーコードが、0xで始まっていますが 16進数で示しているということになります。

他に、カラーコードといわれるものがあります。HTML言語などで 線や文字の色を表現する際に使います。

例えば白なら、#FFFFFF、オレンジなら、#FFA500、などです。先頭にハッシュ記号という #を付け 16進数で表記されます。

文字コードやMACアドレスも 2進数では分かりづらいため 実際は16進数で表記されています。

n進数

2進数は 1桁で0と1の2個、10進数は 1桁で0~9の10個、16進数では 1桁で0~9とA~Fの16個の数や記号を使います。

つまり、n進数では n個の数を使います。このnを 基数といいます。器をイメージします。2進数なら2個、10進数なら10個、16進数なら16個入ります。そしてそれ以上入らなくなれば、次の桁へ上ります。

桁数によって何通り表現されるか?何通りの組み合わせが実現できるかは、n進数に桁数を掛け合わせます。

例えば2進数で4ビットなら 24 で16通り、8ビットなら 28 で256通りです。同様に、10進数の4桁なら104、16進数の3桁なら163で何通りの組み合わせか計算できます。


10進数を2進数・16進数に変換

ここからは、10進数、2進数、16進数の相互変換についての説明になります。情報処理の試験などでは、必ずといっていいほど出てくる問題です。

10進数を2進数にするときは、10進数の数字を2で割っていきます

最後割り切れない数字、1になるまで2で割っていき、余りを出していきます。

最後の1から並べたものが、2進数になります。

10進数から2進数に変換

10進数を16進数にするときは、2進数のときと同じように今度は16で割っていきます

割り切れない数字、16未満になるまで、余りを出していきます。

最後の数字を並べると16進数になります。

16進数では、余りが10や15になるときがありますが、この場合 10ならA、15ならFになります。

10進数から16進数に変換

2進数を10進数・16進数に変換

次によく出てくるのが、2進数から10進数への変換です。

右から、20212223と覚えておきます。

20は、1になります。正の整数の0乗は1という決まりがあります。これは数学で定義されています。

右から、1、2、4、8・・と2の指数計算を行い、各桁の数字と掛け合わせます。合計をすべて足し算すると10進数の数字になります。

2進数から10進数に変換

2進数を16進数に変換するという場合は、2進数を10進数にしてから16進数にするという方法がとられます。

例えば、25という10進数なら10進数から16進数への変換にあったように、16で割っていきます。

そうすると余り9、割り切れない数字は1となり、19が16進数です。

2進数の桁数が多いときなどは、2進数を4桁づつで区切ります。2進数の4桁というのは、16通りの組み合わせで16進数の1桁に当てはまります。

一番右から4桁づつで区切り、3桁残ったりしたら 先頭に0を追加します。

2進数から16進数に変換

それぞれのブロックで、10進数を出し、これを16進数へ変換します。

10進数を求めるときは、ブロックで分けず5桁目から 24、25・・となっていきますので、10進数では、6+13ではなく 109です。あくまで16進数を求める時だけ区切って計算します。

16進数を2進数・10進数に変換

16進数は、2進数→16進数でありましたように 16進数の1桁が2進数の4桁にあたります。

なので16進数が出てきたら、1桁が2進数の4桁になることをイメージします。

16進数から2進数に変換

2進数は、0000~1111までが、10進数の0~15、16進数の0~Fになります。

2進数が分からないという場合は、一度10進数にして、10進数→2進数の2で割っていく方法をとれば、2進数は出せます。

16進数は、0~9までは10進数と同じです。10~15が、A~Fだと覚えておけば、それほど難しいものではありません。

なので、例えば16進数の6F2Aは、2進数では、110111100101010になります。先頭の0は省きます。

16進数から10進数にする場合は、2進数→10進数と同じような方法です。

16進数から10進数に変換

まず16進数の各桁を10進数にして、1桁目から160161162163・・・と掛けていきます。

出た数字をすべて足したものが、10進数の数字になります。16進数の6F2Aは 10進数では、28458になります。

Windowsの電卓

Windowsには電卓のアプリケーションが付いています。アクセサリーの中にあります。

電卓を起動させて、表示→プログラマとすると、2進数、10進数、16進数の相互の変換ができるようになっています。

例えば、左側の10進に印が付いている状態で、15と入力。そして左側で16進にすればF、2進にすれば1111と表示が切り替わります。

Winodwsの電卓

2進数、10進数、16進数の適当な数字を紙に書いて変換してみて、電卓で答え合わせをするということができます。