【一覧表あり】十進数から二進数への変換方法【10進法と2進法】

今回はコンピュータサイエンス (CS) の基礎中の基礎である「10 進法」と「2 進法」について解説します!これがどういった概念なのか、また十進数から二進数に変換する方法など、初心者向けに詳しく解説しています!

こんにちは。iQeda [@iQeeeda] です。

これからコンピュータサイエンス (CS) の基礎を解説していこうと思います。
初回である今回は「10 進法」と「2 進法」について説明します!

十進法とは

10 進法は我々が日常で使っている数字の表現方法です。
人間は十進法で PC に数字入力しますが、PC の内部処理では二進法に変換されています。

10 進法で表現される数字のことを「十進数」と言います。

使う数字は 10 種類

  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数字が 10 種類あるので大きい数字を表現しやすく、結果として桁数が少なくて済みます。
桁数が少ない方が人間にとってはいいですよね。

十進数の桁を右から数えると...

  • 1 桁目は 1 の位を表す
    • ※ 10 の 0 乗 は 1
  • 2 桁目は 10 の位を表す
    • ※ 10 の 1 乗 は 10
  • 3 桁目は 100 の位を表す
    • ※ 10 の 2 乗 は 100
  • 4 桁目は 1000 の位を表す
    • ※ 10 の 3 乗 は 1000

十進数を「乗数」で表現してみよう

十進数 2503 を「乗数」で表現してみましょう。

  • 2503 (十進数) ※ 二進数で 100111000111
    • 2 は 1000 の位
    • 5 は 100 の位
    • 0 は 10 の位
    • 3 は 1 の位
  • つまり 2503 は (2 * 1000) + (5 * 100) + (0 * 10) + (3 * 1) と表現できます
  • 乗数を使うと (2 * 10^3) + (5 * 10^2) + (0 * 10^1) + (3 * 10^0) とも表現できます
    • 乗数の 10 の部分のことは「基数(きすう)」または「(てい)」と言います
    • 乗数の ^3 とかの部分は「指数」と言います
  • 10 進法の基数は 10 で、各位は 10^n となります
  • 指数が ^3^2^1^0 とカウントダウンしていることに注目しましょう

二進法とは

2 進法は主に PC の処理で使われる数字の表現方法です。
PC の内部処理では二進法が使われますが、人間に数字を見せるときは十進法に変換しています。

2 進法で表現される数字のことを「二進数」と言います。

使う数字は 2 種類

  • 0
  • 1

数字が 2 種類しかないので見た目はシンプルですが、桁数が長くなります。
ですがパソコンの処理は早いので桁数が長くても問題ありません。

数字の「0」がスイッチ OFF で、「1」がスイッチ ON の回路のようなイメージです。

二進数の桁を右から数えると...

  • 1 桁目は 1 の位を表す
    • ※ 2 の 0 乗 は 1
  • 2 桁目は 2 の位を表す
    • ※ 2 の 1 乗 は 2
  • 3 桁目は 4 の位を表す
    • ※ 2 の 2 乗 は 4
  • 4 桁目は 8 の位を表す
    • ※ 2 の 3 乗 は 8

二進数を「乗数」で表現してみよう

二進数 1100 を「乗数」で表現してみましょう。

  • 1100 (二進数) ※ 十進数で 12
    • 1 は 8 の位
    • 1 は 4 の位
    • 0 は 2 の位
    • 0 は 1 の位
  • つまり 1100 は (1 * 8) + (1 * 4) + (0 * 2) + (0 * 1) と表現できます
  • 乗数を使うと (1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) とも表現できます
  • 2 進法の基数は 2 で、各位は 2^n となります
  • 指数が ^3^2^1^0 とカウントダウンしていることに注目しましょう

基数変換とは

十進数から二進数に変換する手順を説明します。
これは基数が 10 から 2 に変換されることを意味するので「基数変換」と呼ばれます。

十進数から二進数に変換する手順

十進数の数字をひたすら 2 で割っていき、余りを算出します。
※ どんな数字でも 2 で割ると余りは必ず「0」か「1」になります。

割り切れなくなったら、算出した余りを「逆から繋げる」と二進数になっています。

【例1】12 を二進数にする

「十進数」の 12 を「二進数」として表記してみましょう。

  • 12 を 2 で割っていく
    • 12 / 2 = 6 余り 0
    • 6 / 2 = 3 余り 0
    • 3 / 2 = 1 余り 1
    • 1 / 2 = 0 余り 1
  • 余りに注目すると、逆から「1100」と読むことができる。これが 二進数となる
【例2】1100 を十進数にする

二進数「1100」を乗数で表現して、計算すると十進数に戻せます。

// 答えは 12
(1 * 2^3) +
(1 * 2^2) +
(0 * 2^1) +
(0 * 2^0)

【問題1】2503 を二進数にする

「十進数」の 2503 を「二進数」として表記してみましょう。

  • 2503 を 2 で割っていく
    • 2502 / 2 = 1251 余り 1
    • 1251 / 2 = 625 余り 1
    • 625 / 2 = 312 余り 1
    • 312 / 2 = 156 余り 0
    • 156 / 2 = 78 余り 0
    • 78 / 2 = 39 余り 0
    • 39 / 2 = 19 余り 1
    • 19 / 2 = 9 余り 1
    • 9 / 2 = 4 余り 1
    • 4 / 2 = 2 余り 0
    • 2 / 2 = 1 余り 0
    • 1 / 2 = 0 余り 1
  • 余りに注目すると、逆から「100111000111」と読むことができる。これが二進数となる
【問題2】100111000111 を十進数にする

二進数「100111000111」を乗数で表現して、計算すると十進数に戻せます。

// 答えは 2503
(1 * 2^11) +
(0 * 2^10) +
(0 * 2^9) +
(1 * 2^8) +
(1 * 2^7) +
(1 * 2^6) +
(0 * 2^5) +
(0 * 2^4) +
(0 * 2^3) +
(1 * 2^2) +
(1 * 2^1) +
(1 * 2^0)

位取り記数法とは

10 進法、2 進法などを総称して「位取り記数法 (くらいどりきすうほう)」と言います。

各位の大きさを 10^n2^n と表せるのが特徴です。

例えば 1000000000 と 1000000000 では、どちらが大きい数字か一目でわかりにくいですが、
10^1010^11 という指数表現では、後者が大きい数字であることが明らかで便利です。

  • an, an-1, an-2, ... , a2, a1, a0
    • ある数字の各位を上から並べた場合、このように表現できます
  • an * 10^n, an-1 * 10^n-1, an-2 * 10^n-2, ... , a2 * 10^2, a1 * 10^1, a0 * 10^0
    • それに 10 進法の位取り記数法を使った場合、このように変換できます
    • 各位を公式化すると ak * 10^k と表現できます (添字 k と指数 k が一致する)

ちょっと分かりにくいので、例を掲載しておきます。

  • 2503 の各位を 10 進法で表現するためには...
    • n = 3
    • a3 = 2
    • a2 = 5
    • a1 = 0
    • a0 = 3
  • (2 * 10^3) + (5 * 10^2) + (0 * 10^1) + (3 * 10^0)

二進法・十進法以外の基数法

8 進法

使う数字は 8 種類
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
基数は 8

数字は 1 桁目から 8^0 → 8^1 → 8^2 → 8^3 ...と表します。

16 進法

使う数字は 16 種類
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • A または a
  • B または b
  • C または c
  • D または d
  • E または e
  • F または f
基数は 16

数字は 1 桁目から 16^0 → 16^1 → 16^2 → 16^3 ...と表します。

N 進法

使う数字は N 種類
  • 0
  • 1
  • 2
  • 3
  • (省略)
  • N-1
基数は N

数字は 1 桁目から N^0 → N^1 → N^2 → N^3 ...と表します。

数字の表現方法
  • たとえば a3a2a1a0 は「4桁」の数字として表現できます
    • a0, a1, a2, a3 はそれぞれ「0 〜 N-1」のどれかを表します
  • (a3 * N^3) + (a2 * N^2) + (a1 * N^1) + (a0 * N^0) で計算すれば、十進数の値になります

2 で除算するのは「 1 回、右ビットシフトする」のと同じ

2 で除算するのは「二進数を 1 回、右ビットシフトする」のと同じです。

例えば 14 / 2 の答えは 7 ですが...

14 の二進数である 1110 を 1110 >> 1 すると 111 を得ることができます。
二進数 111 とは十進数 7 のことなので、除算の結果と一致します。

ビットが 1 つ増えたときの十進数

ある二進数の末尾にビットが 1 つ増える場合、
(十進数 * 2) + 末尾に増えるビット で「ビットが 1 つ増えたときの十進数」を取得できます。

  • 二進数「0」
    • (1 * 0) で十進数「0」を求めることが可能
  • 二進数「1」
    • (1 * 1) で十進数「1」を求めることが可能
  • 二進数「10」※ 二進数「1」の末尾にビット 0 を追加
    • (2 * 1) + (1 * 0) で十進数「2」を求めることが可能
    • (1 * 2) + 0 でも十進数「2」を求めることが可能
  •  二進数「11」※ 二進数「1」の末尾にビット 1 を追加
    • (2 * 1) + (1 * 1) で十進数「3」を求めることが可能
    • (1 * 2) + 1 でも十進数「3」を求めることが可能
  • 二進数「100」※ 二進数「10」の末尾にビット 0 を追加
    • (4 * 1) + (2 * 0) + (1 * 0) で十進数「4」を求めることが可能
    • (2 * 2) + 0 でも十進数「4」を求めることが可能
  •  二進数「101」※ 二進数「10」の末尾にビット 1 を追加
    • (4 * 1) + (2 * 0) + (1 * 1) で十進数「5」を求めることが可能
    • (2 * 2) + 1 でも十進数「5」を求めることが可能
  • 二進数「110」※ 二進数「11」の末尾にビット 0 を追加
    • (4 * 1) + (2 * 1) + (1 * 0) で十進数「6」を求めることが可能
    • (3 * 2) + 0 でも十進数「6」を求めることが可能
  • 二進数「111」※ 二進数「11」の末尾にビット 1 を追加
    • (4 * 1) + (2 * 1) + (1 * 1) で十進数「7」を求めることが可能
    • (3 * 2) + 1 でも十進数「7」を求めることが可能

二進数と十進数の比較表

十進数の 100 まで対応する二進数を用意しました。

偶数を二進数で表現すると「最後のビットは 0 になる」、
奇数を二進数で表現すると「最後のビットは 1 になる」ことは知っておくといいと思います。

また二進数に「1」が 1 個しか含まれていないとき、十進数では 2 の累乗になっています。

二進数

十進数

備考

0

0

唯一、二進数の先頭ビットが 0

1

1

2^0

10

2

2^1

11

3

100

4

2^2

101

5

110

6

111

7

1000

8

2^3

1001

9

1010

10

1011

11

1100

12

1101

13

1110

14

1111

15

10000

16

2^4

10001

17

10010

18

10011

19

10100

20

10101

21

10110

22

10111

23

11000

24

11001

25

11010

26

11011

27

11100

28

11101

29

11110

30

11111

31

100000

32

2^5

100001

33

100010

34

100011

35

100100

36

100101

37

100110

38

100111

39

101000

40

101001

41

101010

42

101011

43

101100

44

101101

45

101110

46

101111

47

110000

48

110001

49

110010

50

110011

51

110100

52

110101

53

110110

54

110111

55

111000

56

111001

57

111010

58

111011

59

111100

60

111101

61

111110

62

111111

63

1000000

64

2^6

1000001

65

1000010

66

1000011

67

1000100

68

1000101

69

1000110

70

1000111

71

1001000

72

1001001

73

1001010

74

1001011

75

1001100

76

1001101

77

1001110

78

1001111

79

1010000

80

1010001

81

1010010

82

1010011

83

1010100

84

1010101

85

1010110

86

1010111

87

1011000

88

1011001

89

1011010

90

1011011

91

1011100

92

1011101

93

1011110

94

1011111

95

1100000

96

1100001

97

1100010

98

1100011

99

1100100

100

おすすめの本

今回の十進数・二進数だったり、必要な数学知識を学べる技術書を紹介しておきます。
やさしい日本語で書かれているのでオススメです。

おすすめ

CS シリーズ

次回

No comments yet