【Python】数値型 整数編

python_logo

Pythonでは様々な数値を扱えます。

数値型には3種類あります。

整数・浮動小数点数・複素数です。

今回はそのうちの整数について焦点を当てて紹介したいと思います。

以下が今回の内容です。

整数について

  1. 整数
  2. 2進数
  3. 8進数
  4. 10進数
  5. 16進数
  6. ブール値
  7. Tipsや注意点

ちなみにリテラルとは、その定数を生成する表現方法です。

今回は数値型の3つの種類についての作成方法、すなわちリテラルを確認していきます。

整数

整数としての表現は4つあります。

2進数,8進数,10進数,16進数です。

ほとんどの人は10進数の使い方が分かれば大丈夫だと思います。

対話式インタプリタを使って それぞれの作成方法を見ていきましょう 。

2進数

数値の先頭に0bもしくは0Bをつけると2進数表記とみなします。

0もしくは1で数を表します。


>>> 0b0101
5
>>> 0B1010
10

8進数

数値の先頭に0oもしくは0Oをつけると8進数表記とみなします。

0から7で数を表します。


>>> 0o0101
65
>>> 0O1010
520

10進数

これは皆さんが日常的に使っている表現で結構です。


>>> 1000
1000
>>> 1010
1010

16進数

先頭に0xもしくは0Xをつけると16進数表現とみなします。

0-9およびa-fで数を表します。


>>> 0x0101
257
>>> 0X1010
4112

ブール値

PythonではTrueとFalseはそれぞれ事実上1と0です。

では、何が1と0と違うのか?

文字列にしたときにTrueもしくはFalseと表示できるようにしているだけなのです。

>>> x = True
>>> y = False
>>> x + 1
2
>>> y + 1
1

内部では0と1なので数値との計算ができます。

Tipsや注意点

10進数と8進数にご用心

実はPython2では8進数の表現として、先頭に0をつけていました。

Python3ではそれが曖昧で分かりにくいので10進数の頭に0をつけるのを禁止しています。

但し、普通の0は使えますので安心してください。

マイナスの値は?

マイナスの値は-をつけることで表現できます。

ただし、リテラルとしての表現にマイナスはありません。

あくまで数値リテラルと演算子として「-」をつけて表現しているのです。

Python2からPython3に移行した人向け

昔は整数の中に長整数という方がありました。他の言語でいうlong型がありました。

Python2の仕様では普通に定義するとint型になります。

末尾にLもしくはlをつけると長整数型として定義されます。

長整数型の特徴はメモリが許す限り桁がどんなものでも格納できるのが利点でした。

ただし、普通のintが桁あふれすると勝手にlong型になるという仕様変更がありましたので、わざわざlong型を使う必要がほぼありませんでした。

Python3ではintとlongの仕様が統合され、一つになったのです。

現在では普通のint型が最強の整数の型として君臨していることを覚えていってください。


>>> 10 ** 100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

大抵の言語では上の数は桁あふれしますが、Pythonはメモリが許す限りどんな値でも表現してくれますよ!

Python3.6で新しく追加された「_」

桁を見やすいようにアンダースコアを使って表現することができるようになりました。

以下のように数値リテラルを定義できます。


>>> 0B1111_1000
248
>>> 0O7070_0707
14909895
>>> 1_000_000
1000000
>>> 0X2001_FF00_0001
35192945246209

これの何がいいのかというと人間にとってどこがどの桁なのかわかりやすい。つまり、可読性に優れているのです。特に大きな金額の際の計算で役立つでしょう。

まとめ

いかがでしょうか。

いくつかPython2からPython3に変更したことによる違いがあります。

ですが、Python3になることでより明確に、便利になっていることが分かると思います。 特に8進数と10進数の扱いがスッキリしました。

さらにPython3.6でアンダースコアを使った表現によって、どこが桁なのかが分かりやすくなっています。

初めてPythonを触る人はとりあえず10進数の扱いだけ覚えていってください。 他は実際のプログラミングにおいてほぼつかいません。

それでは以上になります。

みなさんのPythonライフが向上することを祈っていますよ!