Pythonプログラミングでは、数値を扱う際にさまざまな進数が利用されます。
その中でも、16進数はコンピューターシステムやプログラミングで頻繁に使用されるため、理解しておくことが重要です。
この記事では、Pythonで16進数を扱う方法を初心者向けにわかりやすく解説します。
16進数とは
16進数とは、16個の数字を使って数を表現する方法です。
10進数では0から9までの10個の数字を使いますが、16進数では0から9までの数字に加えて、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)の6つのアルファベットを使って数を表現します。
つまり、16進数では0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
の16個の数字を使います。
16進数は、コンピュータの内部で扱われるデータやアドレスを表現する際によく使われます。
なぜなら、16進数は2進数(0と1のみを使う数値表現)との変換が容易であり、コンピュータが扱いやすいからです。
例えば、1バイト(8ビット)のデータは、2桁の16進数で表現することができます。
それでは、Pythonプログラムで16進数を扱う方法を見ていきましょう。
Pythonでの16進数の扱い方
Pythonでは16進数を簡単に扱うことができます。
この章では、Pythonでの16進数の表記方法や変換方法、演算方法について詳しく解説します。
16進数の表記方法
Pythonでは、16進数を表す際に0x
を先頭につけます。
例えば、16進数の1A
はPythonでは0x1A
と表記します。
hex_number = 0x1A
print(hex_number) # 26
この例では、16進数の1A
を変数hex_number
に代入し、その値を10進数で表示しています。
結果は26
となります。
16進数の変換方法
Pythonでは、様々な数値を16進数に変換したり、16進数から他の数値に変換することができます。
10進数から16進数への変換
10進数を16進数に変換するには、 hex()
関数を使用します。
decimal_number = 26
hex_number = hex(decimal_number)
print(hex_number) # '0x1a'
この例では、10進数の26
を16進数に変換し、結果を表示しています。
結果は'0x1a'
となります。
16進数から10進数への変換
16進数を10進数に変換するには、 int()
関数を使用します。
int()
関数の第二引数に基数を指定することで、指定した基数の数値を10進数に変換できます。
hex_number = '0x1a'
decimal_number = int(hex_number, 16)
print(decimal_number) # 26
この例では、16進数の'0x1a'
を10進数に変換し、結果を表示しています。
結果は26
となります。
2進数から16進数への変換
2進数を16進数に変換するには、まず2進数を10進数に変換し、その後10進数を16進数に変換します。
binary_number = '1010'
decimal_number = int(binary_number, 2)
hex_number = hex(decimal_number)
print(hex_number) # '0xa'
この例では、2進数の'1010'
を16進数に変換し、結果を表示しています。
結果は'0xa'
となります。
16進数から2進数への変換
16進数を2進数に変換するには、まず16進数を10進数に変換し、その後10進数を2進数に変換します。
hex_number = '0xa'
decimal_number = int(hex_number, 16)
binary_number = bin(decimal_number)
print(binary_number) # '0b1010'
この例では、16進数の'0xa'
を2進数に変換し、結果を表示しています。
結果は'0b1010'
となります。
16進数の演算方法
Pythonでは、16進数同士の加算、減算、乗算、除算、剰余演算を行うことができます。
16進数の加算
16進数同士の加算は、通常の数値同士の加算と同じように行えます。
hex_number1 = 0x1A
hex_number2 = 0x0F
result = hex_number1 + hex_number2
print(hex(result)) # '0x29'
この例では、16進数の0x1A
と0x0F
を加算し、結果を16進数で表示しています。
結果は'0x29'
となります。
16進数の減算
16進数同士の減算も、通常の数値同士の減算と同じように行えます。
hex_number1 = 0x1A
hex_number2 = 0x0F
result = hex_number1 - hex_number2
print(hex(result)) # '0xb'
この例では、16進数の0x1A
と0x0F
を減算し、結果を16進数で表示しています。
結果は'0xb'
となります。
16進数の乗算
16進数同士の乗算も、通常の数値同士の乗算と同じように行えます。
hex_number1 = 0x1A
hex_number2 = 0x0F
result = hex_number1 * hex_number2
print(hex(result)) # '0x1e2'
この例では、16進数の0x1A
と0x0F
を乗算し、結果を16進数で表示しています。
結果は'0x1e2'
となります。
16進数の除算
16進数同士の除算も、通常の数値同士の除算と同じように行えます。
ただし、結果は小数になる場合があるため、 float()
関数を使用して小数に変換してから表示することが望ましいです。
hex_number1 = 0x1A
hex_number2 = 0x0F
result = hex_number1 / hex_number2
print(float(result)) # 1.4666666666666666
この例では、16進数の0x1A
と0x0F
を除算し、結果を小数で表示しています。
結果は1.4666666666666666
となります。
16進数の剰余演算
16進数同士の剰余演算も、通常の数値同士の剰余演算と同じように行えます。
hex_number1 = 0x1A
hex_number2 = 0x0F
result = hex_number1 % hex_number2
print(hex(result)) # '0xb'
この例では、16進数の0x1A
と0x0F
の剰余演算を行い、結果を16進数で表示しています。
結果は'0xb'
となります。