勉強がツマラナイ

ビットとバイトと2進数

目次

  1. はじめに
  2. 要点まとめ
  3. 練習と確認
  4. 疑問と考察
  5. おわりに

はじめに

プログラミングの勉強をしてみようと思って参考書を開いてみたのですが、私はコンピュータ全般の知識が不足しているようで専門用語がわかりませんでした。

どうしようかと調べてみたところ、基本情報技術者という資格の勉強をすることで、コンピュータ全般の基礎知識が手に入るということがわかりました。

というわけで、こちらの勉強から始めていこうかと思います。

ただ、資格の取得が目的ではありませんので、私の独断で不要と判断したところは省いて行きます。

しかし、初めから理論ばかりでちょっと嫌になってきました……。

要点まとめ

ビット(bit)

  • コンピュータの扱える情報の最小単位で、0と1という2つの状態を表す事ができます。
  • 実際にはコンピュータ内部にある、素子の電気的な状態の変化を、0(低い電圧)と1(高い電圧)に対応させて考えているだけです。
  • bitはbinary digit(2進数)の略で、2進数の1桁を表しています。

バイト(byte)

  • 8ビットの事です
  • 2通りの状態を表せるビットを8個まとめて考えると、2×2×2×2×2×2×2×2=256通りの状態(組み合わせ)を扱えることになります。

10進法(0d)--- decimalのd

  • 私たちが普段使っている数の表現方法で、0から9までの数字を扱います。9の次は桁が繰り上がって10になります。また、10進法であらわされた数字を10進数といいます。
  • 10進数を表す記号として、数字の前に0dを付けます。
    例:0d123(10進数で123を表す)
  • 10進数は記号を省略することもできます。
    例:123

2進法(0b)--- binaryのb

  • 0と1の二つの数字だけで数を表現する方法の事です。2進法であらわされた数字を2進数といいます。
  • 2進数は数字の前に0bの記号を付けます。
    例:0b10(10進数で2を表す)
  • 2という数字は使用できません。2を2進数で表す場合は、桁が繰り上がって0b10になります。
    0:0b0
    1:0b1
    2:0b10(桁が繰り上がる)
    3:0b11
    4:0b100(桁が繰り上がる)
  • コンピュータは0と1の情報しか扱えません。ですので、2進法で数を表現することになります。

16進法(0x)--- hexadecimalのx

  • 0~9の数字とA~Fの文字を使用して数を表現する方法の事です。
  • 1桁で0~Fまでの16通りを表現できます。
  • 16進数は数字の前に0xの記号を付けます。
    0:0x0
    1:0x1
    2:0x2
    3:0x3
    4:0x4
    5:0x5
    6:0x6
    7:0x7
    8:0x8
    9:0x9
    10:0xA
    11:0xB
    12:0xC
    13:0xD
    14:0xE
    15:0xF

16進数でビットの状態を見る

  • コンピュータは0と1の情報しか扱えません。しかし、このままビットの状態を羅列して表すと桁が多くなり非常に見にくいです。
    11110000
    11001100
    10101010
    00001111
  • そこで16進数で表すと、桁が少なくなり見やすくなります。先ほどのビット状態を16進数で考えてみましょう。4ビットが1桁に対応しますので、1バイトは2桁で表せます。
    1111 0000:0xF0
    1100 1100:0xCC
    1010 1010:0xAA
    0000 1111:0x0F
  • 16進数で計算をするわけではありません。今のところはビットの状態を見やすくするだけです。
  • 16進数とビットの対応表を記載します。
    0x0:0000
    0x1:0001
    0x2:0010
    0x3:0011
    0x4:0100
    0x5:0101
    0x6:0110
    0x7:0111
    0x8:1000
    0x9:1001
    0xA:1010
    0xB:1011
    0xC:1100
    0xD:1101
    0xE:1110
    0xF:1111

練習と確認

確認してみましょう。

  1. ビットとは何ですか?
  2. コンピュータの扱える情報の最小単位で、0と1の二つの状態を表せます。

    二進数の1桁の事です。

  3. バイトとは何ですか?
  4. 8ビットの事です。

  5. 1バイトで何通りの状態(組み合わせ)を扱えますか?
  6. 1バイトは8ビットです。つまり、組み合わせは2の8乗=256通りになります。

  7. 2バイトで何通りの状態(組み合わせ)を扱えますか?
  8. 2バイトは16ビットです。つまり、組み合わせは2の16乗=65536通りになります。

  9. 次のビット列を1バイト毎に16進数で表してください。
  10. 10010100 11110010 01011000 00000110

    0x94 0xF2 0x58 0x06

疑問と考察

実際のところ2進数と16進数の対応は、表やツールを使えばよいので無理に覚える必要はなさそうですね。

おわりに

2進数は普段使用しないため、かなり難しく感じます。これ、負の数や小数はどう表現するのでしょうか。次回はその辺を勉強することになりそうですね。

とにかく、コンピュータは0と1という状態しか扱えないことがわかりました。この最小情報単位の1ビットを集積してアプリなどが作られていると考えると、凄まじいの一言ですね。