進数表記
私たちが普段用いている表記は10進数なので、
という意味をもちます。
表にしたがって、
となります。しかし、単に数字を
底に
たとえば、
となります。
底に
対応表を使って、
Pythonにおける進数表記と相互変換
Python で 2進数、8進数、16進数 をリテラルで表記する場合、数値の先頭に 0b, 0o, 0x をつける というルールがあります。また、10進数リテラル数値をそれぞれの進数表記の文字列に変換するための関数も用意されています。
2進数表記
2進数表記の数値をリテラルで入力するときは数値の頭に 0b をつけます。
# PYTHON_BINARY
# In[1]
# 先頭に0bのつく数値は2進数
val = 0b1111
print(val)
# 15
bin 関数を使うと、10進数表記の数値を2進数表記の文字列に変換することができます。ちなみに、”bin” は “binary digits” の略です。
# In[2]
# 10進数の数値を2進数文字列に変換
val= bin(15)
print(val)
# '0b1111'
2進数表記の文字列を10進数表記の数値に変換するときには int 関数を用います(第2引数には底の2を指定します)。
# In[3]
# 2進数文字列を数値に変換
val = int("0b1111", 2)
print(val)
# 15
8進数表記
8進数表記の数値をリテラルで入力するときは数値の頭に 0o をつけます。
# PYTHON_OCTAL
# In[1]
# 先頭に0oのつく数値は8進数です
val = 0o77
print(val)
# 63
oct 関数を使うと、
oct は octal digits (
# In[2]
# 10進数の数値を8進数文字列に変換
val = oct(63)
print(val)
# '0o77'
8進数表記の文字列を10進数表記の数値に変換するときには int 関数を用います(第2引数に底の8を指定します)。
# In[3]
# 8進数文字列を数値に変換
val = int("0o77", 8)
print(val)
# 63
16進数表記
16進数表記の数値をリテラルで入力するときには数値の頭に 0x をつけます。
# PYTHON_HEXADECIMAL
# In[1]
# 先頭に0xのつく数値は16進数
val = 0x3E8
print(val)
# 1000
hex 関数を用いると、10進数表記の数値を16進数表記の文字列に変換できます。
hex は hexadecimal digits (16進数) の略です。
# In[2]
# 10進数の数値を16進数文字列に変換
val = hex(1000)
print(val)
# '0x3e8'
16進数表記の文字列を10進数表記の数値に変換するときには int 関数を用います(第2引数に底の16を指定します)。
# In[3]
# 16進数文字列を数値に変換
val = int("0x3e8", 16)
print(val)
# 1000
コメント
(2進数で表すのが小数の場合)0.25を2進数0.01と表現する時、0b.01と書きますか?それとも0b0.01とかなんでしょうか。
ご教授お願いしますm(_ _)m
コメントありがとうございます。Python で 0b や 0o などのプレフィックスのついた表記を数値リテラルとして認識するのは整数 (int型) だけです。小数 (float型) についてはサポートしていません。