PR

【IT用語解説】2進数とは?16進数との関係と0・1でデータを表す仕組みを解説

2進数とは?をコンピュータ基礎シリーズの統一デザインで表すアイキャッチ IT-Skills

2進数とは、0と1の2種類の数字だけで値を表す方法です。16進数は、0〜9とA〜Fの16種類で値を表します。どちらも同じ値の書き方を変えたもので、16進数は長いビット列を短く読むためによく使われます。

「01000001」「65」「0x41」は、文脈によってはすべて同じ値です。違うのは値そのものではなく、何進数で書いたかです。

このページで学べる内容
  • 2進数の桁が持つ重み
  • 10進数65を2進数へ読み替える方法
  • 4ビットと16進数1桁の対応
  • 0xという接頭辞の意味
  • 文字Aとバイト列の関係
スポンサーリンク

同じ値を3通りで書いてみる

memo.txtへ半角英字のAを入力し、UTF-8で保存する例を使います。ASCII範囲のAはUTF-8でも1バイトで、数値としては10進数65、2進数01000001、16進数41です。

文字Aが10進数65、2進数01000001、4ビットずつ区切った0100と0001、16進数0x41として同じ値を表す対応図
文字Aを表す1バイトは、2進数なら01000001、16進数なら0x41です。4ビットごとに16進数1桁へ対応します。

2進数は桁が上がるたびに2倍になる

普段使う10進数では、右端から1、10、100、1000と、桁が上がるたびに重みが10倍になります。2進数では、右端から1、2、4、8、16、32、64、128と2倍になります。

2進数の桁 重み 01000001で使うか
左から1桁目 128 0
左から2桁目 64 1
左から3〜7桁目 32・16・8・4・2 すべて0
右端 1 1

01000001では、64の桁と1の桁が1です。したがって、10進数へ直すと64 + 1 = 65になります。

2進数 01000001
= 0×128 + 1×64 + 0×32 + 0×16
  + 0×8 + 0×4 + 0×2 + 1×1
= 65(10進数)

なぜコンピュータは2進数を使うのか

デジタル回路では、電圧が高い・低い、スイッチがオン・オフといった2つの状態を区別し、それを0と1へ対応づけると安定して扱いやすくなります。データや命令は、多数のビットを組み合わせたパターンとして表現されます。

「コンピュータは0と1しか理解できない」は入口としての表現です。正確には、物理回路の状態を論理的な0と1へ対応づけ、その組み合わせに数値・文字・命令などの意味を与えています。

16進数は4ビットを1桁で書ける

16進数では、10〜15をA〜Fで表します。2進数4桁で作れる組み合わせは0000から1111まで16通りなので、4ビットを16進数1桁へぴったり対応させられます。

2進数 10進数 16進数
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E
1111 15 F

01000001を4ビットずつ区切ると0100 0001です。左の0100は16進数4、右の0001は1なので、41になります。

0xは「ここから16進数」という印

プログラムやログでは、16進数を0x41のように書くことがあります。先頭の0xは値の一部ではなく、「この数字列は16進数として読んでください」という接頭辞です。2進数は0b01000001と書く言語もあります。

注意。 10だけでは、10進数なら十、2進数なら二、16進数なら十六です。ログや仕様を読むときは、接頭辞・桁数・項目の説明から基数を確認します。

16進数はどこで使われるのか

16進数は、メモリアドレス、バイト列、文字コード、色コード、通信データなどで使われます。たとえばWebの色#00A9DFは、赤・緑・青の各成分を2桁の16進数で表したものです。

文字Aと数値65の対応そのものは文字コードの規則です。詳しくは文字コードとは、ビットとバイトの単位はビットとバイトの違いで確認できます。

まとめ:2進数と16進数の関係

  • 2進数は0と1だけで値を表す
  • 各桁の重みは右から1、2、4、8、16…と2倍になる
  • 2進数4桁は16進数1桁へ対応する
  • 0xは16進数、0bは2進数を示す接頭辞として使われる
  • 文字AはUTF-8のASCII範囲では10進数65、2進数01000001、16進数0x41

2進数とは、2つの状態を0と1へ対応づけて値を表す方法です。長い2進数は4ビットずつ区切って16進数へ直すと読みやすくなります。まずは01000001 → 0100 0001 → 0x41の変換を軸に覚えましょう。

関連する基礎用語

  • CPUとは:ビット列として表される命令を実行するCPUへつなぐ
タイトルとURLをコピーしました