2進数、10進数、16進数

■10進数

10進数は日常で使用している数字の数え方です。
0から9までの10個の数字を使って数を表現します。
0、1、2、3、4、5、6、7、8、9と順番に増えて9の次は桁(位)が増えて10になり、
桁が増えていくと10、100、1000……となっていきます。
この桁の増え方は一桁は10^0、二桁は10^1、三桁は10^2で表せることがわかります。

	例:10進数786を10の累乗を使用して表現した場合
		7 * 10^2 + 8 * 10^1 + 6 * 10^0 = 700 + 80 + 6 = 786

■2進数

2進数は数字の0と1の2つの数字を使用して数を表現します。
0、1と順番に増えて1の次は桁(位)が増えて10となり、
桁が増えていくと10、100、1000……となっていきます。
これも10進数と同様に累乗で表すことが可能です。
ただ、今回は桁が変わる値は2なので、累乗で使用する値は2になります。
1桁目は2^0、2桁目は2^1、3桁目は2^2となります。

	例:2進1010を10進数で表した場合
		1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 8 + 0 + 2 + 0 = 10(10進数)

■16進数

16進数は数字の0~9までとアルファベットのA~Fまでを使用して数を表現します。
はじめは10進数と同じように0、1、2と順番に数字が増えていきます。
数字が9まで増えて0~9までの数字を使い切ったらアルファベットに切り替わります。
16進数の1桁を全て列挙すると0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fとなります。
Aは10進数でいうと10、Bは11、Cは12、Dは13、Eは14、Fは15です。
桁の増え方や累乗で使用する値の考え方は2進数や10進数と同じです。

	例:16進数3BFを10進数で表した場合
		3 * 16^2 + B * 16^1 + F * 16^0 = 768 + 176 + 15 = 959(10進数)

■基数

基数とは数え方の基となる値のことです。
10進数なら「10」、2進数なら「2」、16進数なら「16」が基数となり、
基数の累乗で各進数の桁が決まります。

■2進数、10進数、16進数の比較表

以下の表は2進数、10進数、16進数の数値比較表となります。
16進数がFになるまでに2進数が4桁に10進数が2桁になっていることがわかります。
pgtheory_0007

■基数変換

基数変換とは基数を別の基数に変換することです。
「■2進数」や「■16進数」の例で行っている計算は最終的に10進数で表現していますので、
基数変換といえます。

●2進数から10進数への変換
	2進数から10進数への変換は「■2進数」の例で行っているとおり
	各桁に基数(今回は2)の累乗で重み付けをして計算します。

	例:2進数1111を10進数に基数変換する
		1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 4 + 2 + 1 = 15
		※基数の重み付けは2桁目が1になっていることに気をつけてください。

●16進数から10進数への変換
	16進数から10進数への変換は「■16進数」の例で行っているとおり
	各桁に基数(今回は2)の累乗で重み付けをして計算します。

	例:16進数FFFを10進数に基数変換する
		F * 16^2 + F * 16^1 + F * 16^0 = 3840 + 240 + 15 = 4095
		※基数の重み付けは2桁目が1になっていることに気をつけてください。

●10進数から2進数への変換
	10進数を2進数へ変換する方法は10進数の数字を2で割り切れなくなるまで
	割り算を行うことで求められます。

	例:10進数13を2進数へ変換する
		13 / 2 = 6 あまり 1
		6 / 2 = 3 あまり 0
		3 / 2 = 1 あまり 1
		1 / 2 = 0 あまり 1
		この計算で出たあまりを下から並べていくことで2進数が求まります。

		変換結果:13 => 1101

●10進数から16進数への変換
	10進数を16進数へ変換する方法は10進数の数字を16で割り切れなくなるまで
	割り算を行うことで求められます。

	例:10進数4090を16進数へ変換する
		4090 / 16 = 255 あまり 10(A)
		255 / 16 = 15 あまり 15(F)
		15 / 16 = 0 あまり 15(F)
		この計算で出たあまりを下から並べていくことで16進数が求まります。

		変換結果:FFA

●2進数から16進数への変換
	2進数から16進数への変換は2進数を下から4桁ずつ区切っていきます。
	区切られた桁数を10進数に変換し、その後16進数に変換を行えば
	2進数から16進数への変換は可能です。
	※0~15までの範囲なので、直接2進数に戻しても問題ありません。

	例:2進数10110110を16進数に変換する
		①4桁ずつ区切る
			10110110を下から4桁ずつに区切ると
			「1011」と「 0110」に分けられます。

		②10進数に変換する
			分けられた数字を10進数に変換します。
				1011 => 11
				0110 => 6
		③16進数に変換する
			②で10進数に変換した数字を16進数に変換します。
				11 => B
				6 => 6
			
		変換結果:B6

●16進数から2進数への変換
	16進数から2進数への変換は16進数の各桁を10進数に変換し、
	変換した数字を2進数に変換すれば16進数から2進数への変換は可能です。
	※直接16進数の各桁を2進数に戻しても問題ありません。

	例:16進数AFを2進数に変換する
		①各桁を10進数に戻す
			AとFを10進数に戻します。
				A => 10
				F => 15
	
		②2進数に変換する
			①で10進数に変換した数字を2進数に変換します。
				10 => 1010
				15 => 1111

		変換結果:10101111