記事には広告を含む場合があります。

C言語入門講座

bit(ビット)とbyte(バイト)の違い、換算時の計算方法を解説

2022年5月3日

おゆ

組み込み系プログラマとして5年働いていた元エンジニアです。得意言語はC言語とC++。本サイトでは学生および新人組み込み系プログラマに向けてプログラミング知識をわかりやすく解説しています。

ビットとバイトってどう違うの?メガバイトとかギガバイトとか聞くけど何のことかよくわからない。

こんな疑問にお答えします。

記事の内容

  • ビット・バイト間の換算方法
  • ビットとバイトの違い
  • 2進数とは?
  • キロバイト・ギガバイトって何?
おゆ
元エンジニアの筆者が解説します。

この記事を読むとビットとバイトについて大まかに理解できます。できるだけわかりやすく解説しますのでぜひ続きもご覧ください。

bit(ビット)・byte(バイト)換算時の計算方法

換算方法をサクッと確認したい方はどうぞ。

ビットからバイトへ

ビット数を8で割るとバイトへ変換できます。

例)56ビットをバイトへ変換

56÷8=7

なので56ビットは7バイトです。

バイトからビットへ

バイト数に8を掛けるとビットへ変換できます。

例)12バイトをビットへ変換

12×8=96

なので12バイトは96ビットです。

bit(ビット)とbyte(バイト)の違い

ビットとバイトの違い

ビット(bit)とはデータの最小単位です。1ビットは1bとも表記されます。

バイト(byte)はデータの基本単位で、1バイト=8ビットです。1バイトは1Bとも表記されます。

1000ミリリットル=1リットルのように細かいもの(ビット)をまとめた単位がバイトです。

ビットが何なのか全くイメージできない…
おゆ
そんな方のために以下ではビットとは何かについてできるだけかみ砕いて解説します。

ビットとは何か?

1ビットってどれくらいの量なの?
おゆ
説明のためにまずはコンピュータの仕組みについて簡単に解説します。

データが保存されているのはコンピュータの中に入っているメモリやストレージです。

メモリはメインメモリ、RAMとも呼ばれます。

メモリやストレージ内部には無数のメモリセル(スイッチのようにON、OFFできるもの)が並んでおり、メモリセル1つ1つが通電しているかしていないか(ONかOFFか)でデータを記録します。このメモリセル1つに記録できる情報量が1bです
メモリセル
※最近のストレージにはメモリセル1つに1b以上保存できるものもありますが、ここでは簡単化のために1セル1bとしています。

その他のコンピュータのパーツでも通電するか否か(ONかOFFか)でデータをやり取りしています。

ONかOFFかでどうやってデータを記録するの?

ON、OFFは一般的に数字でONが1、OFFが0に置き換えられます。メモリセル8つ分のON、OFFを0と1で書くと以下のようになります。このように0と1だけで表す数字を2進数といいます。
メモリセルのデータ

2進数は私たちが普段使っている10進数に換算できます。例えば2進数の1000,0001は10進数で129となります。2進数についてはこちらで解説しています。

メモリセル1つに1b記録できるのでメモリセル8つには1B(=8b)記録できます。1bには0と1の2つの数字を記録でき、1Bには最小値の0から最大値1111,1111までの256通りの数字を記録できます。

コンピュータ上では文字や記号も数字に変換されて記録されます。

2進数と10進数の関係

2進数とは?

2進数とは0と1の2つの数字を使って数を表現する方法のことです。

私たちが普段使っているのは10進数です。10進数は0~9までの10個の数字を使って数を表現します。

例えば2進数と10進数の数字は以下のように対応しています。

10進数 2進数
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010

10進数では1桁の最大値9まで来たら次は2桁目を1にして、1桁目は0に戻して10になります。

2進数でも同じように考えます。2進数では1の次は10です。1桁の時の最大値1まで来たら次は2桁目を1に繰り上げ、1桁目を0に戻して10になるわけです。

おゆ
コンピュータ内では2進数でデータを扱っています。

2進数では10は「ジュウ」ではなく「イチゼロ」、11は「ジュウイチ」ではなく「イチイチ」と呼びます。

2進数の換算方法

2進数を10進数に換算する時はn桁目の数が1の時だけ2のn-1乗を計算し、それらを足すことで10進数に変換できます。

例1)2進数1000を10進数に変換

4桁目だけが1なので24-1を計算します。
24-1=23=8
よって10進数では8です。

例2)2進数1101を10進数に変換

4, 3, 1桁目が1なので24-1と23-1と21-1を足します。
24-1+23-1+21-1=23+22+20=8+4+1=13
よって10進数では13です。

2の何乗か迷ったときは2進数の1を10進数に変換してみてください。2進数の1は10進数でも1なので20、つまりn桁目は2のn-1乗と思い出せるはずです。

キロバイト、ギガバイトとは?

キロバイト(KB)、ギガバイト(GB)という表現も聞いたことがあると思います。これらもバイトと同じ情報の単位です。情報の単位と換算は以下にまとめました。

単位 省略形 換算
ビット(bit) b -
バイト(byte) B 1 B=8 b
キロバイト(kilo byte) KB 1 KB=1024 B
メガバイト(mega byte) MB 1 MB=1024 KB
ギガバイト(Giga byte) GB 1 GB=1024 MB
テラバイト(tera byte) TB 1 TB=1024 GB
ペタバイト(peta byte) PB 1 PB=1024 TB
ゼタバイト(zetta byte) ZB 1 ZB=1024 PB
ヨタバイト(yotta byte) YB 1 YB=1024 ZB
1km=1000mだから1KB=1000Bかと思ったけど違うの?なんで1024っていう微妙な数字なの?
おゆ
2進数では1024がキリが良い数字だからです。

1000は103と表せます。10進数ではこれがキリの良い数字ですよね。

同じように1024は210なので2進数にとってキリの良い数字です。実際に10進数の1023は2進数で11,1111,1111、1024は100,0000,0000なのでちょうど桁が上がる数字です。

10進数の1000は2進数では11,1110,1000と中途半端な数字です。同じ10bというデータ量なら最大値の11,1111,1111までまんべんなく使いたいですよね。

まとめ:プログラミング時にも使える知識

この記事の内容はコンピュータ関連の作業を行う際には必須の知識です。プログラミングを習う際にもビットやバイトは必修です。ここまで読んだあなたにはその知識が身に付けていただけたかと思います。本サイトではC言語やC++をわかりやすく解説する記事を書いているので、よろしければそちらもご覧ください。

ブログランキング参加中。クリックしてもらえると励みになります。

ブログランキング・にほんブログ村へ

-C言語入門講座