0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

進数

Posted at

進数の表記

16進数の表記
16進数をリテラルで表記する場合、Python3では以下のような形式になります。
・先頭に「0」を付ける
・その後に「x」を記述する
・続けて0から9まで、及びaからfまでの英字を書く
「x」を含め、英字は大文字・小文字どちらでも構いません。

16進数の数値リテラルをキーボードから打ち込むと、10進数に変換した数値を表示します。
Pythonでは、16進数リテラルを数値型として扱います。
16進数のリテラルを10進数に自動的に変換します。
【16進数のリテラルを入力した例】 0x1ff → 511

数値から16進数相当の文字列を得るには、hex()という組み込み関数を使います。
引数に数値を与えると、16進数相当の文字列を返します。
「hex」とは、英語で16新数表示を意味する「hexadecimal」を略したものです。
【10進数の数値を16進数相当の文字列に変換した例】 hex(1023) → ’ox3ff’

16m進数の数値リテラルではなく、16進数相当の文字列を数値に変換するためには、組み込み関数のint()を使います。
ただし、第2引数に基数として「16」を渡します。
【16進数相当の文字列を数値に変換した例】int(“ox100”, 16) → 256

2進数の表記
2進数をリテラルで表記する場合、Python3では以下の様な形式を使います。
・先頭に「0」を付ける
・その後に「b」を記述する
・0または1の数値を続ける
16進数のリテラル表記と同様に、2進数のリテラルも10進数に変換します。
【2進数のリテラルを入力した例】 0b1000 → 8

10進数の数値を2進数相当の文字列に変換するためには、組み込み関数のbin()を使います。
関数名の「bin」とは、英語で2進数表記を意味する「binary」を略したものです。
【10進数の数値を2進数相当の文字列に変換した例】 bin(1023) → ‘0b1111111111’

2進数相当の文字列を整数に変換するためには、組み込み関数int()の第2引数に「2」という基数を渡して呼び出します。
※16進数の時と同じ
【2進数相当の文字列を数値に変換した例】 int(“0b1111111111”, 2) → 1023

8進数の表記
8進数をリテラルで表記する場合、Python3では以下のような形式を使います。
・先頭に「0」を付ける
・その後に「o」を記述する
・0から7までの数値を続ける
Python2までは、「0123」のように0から始まる数値を使って8進数のリテラル表記としていました。
それだと「0123」は8進数、「123」は10進数となって紛らわしく、また、16進数や2進数と表記の仕方が異なっていたのですが
Python3になって、表記が統一されました。
【8進数のリテラルを入力した例】 0o1777 → 1023

数値を8進数相当の文字列に変換するためには、組み込み関数のoct()を使います。
関数名の「oct」とは、英語で8進数表記を意味する「octal」を略したものです。
【10進数の数値を8進数の文字列相当の文字列に変換した例】 oct(1023) → ’0o1777’

8進数相当の文字列を整数に変換するためには、組み込み関数のint()の第2引数に「8」という基数を渡して呼び出します。
※16進数、2進数の時と同じ
【8進数相当の文字列を数値に変換した例】 int(“0o1777”, 8) → 1023

ビット演算子
ビット演算子とは、2進数を個々の「ビット列」(1と0で構成された列)と見立てて実行する論理演算のことです。
演算というと、足し算や掛け算を思い浮かべまずが、ビット演算は、「+」や「*」といった算術演算よりも、論理演算に似た操作です。
論理演算とは、「==」などを使った比較演算を「and」や「or」で組み合わせる演算のことです。

ビット演算はGUIライブラリのようなものを使ってプログラミングを作るときなど、C言語で書かれたライブラリを利用するのに
用いることがあります。Pythonの標準ライブラリの中には、正規表現のモジュール(re)のように、引数として渡すフラグを
組む立てるときに、ビット演算子を利用するものがあります。
Pythonでは、特別な演算子を使って、整数を対象にビット演算を行うことができます。
0と1で構成される文字列を使ってビット演算をしたい場合は、組み込み関数のint()を使って文字列を整数に変換してから行えばいいでしょう。

【Pythonで利用できるビット演算子】

ビット演算子 説明
x l y xとyの論理和(OR)をとる
x & y xとyの倫理積(AND)をとる
x ^ y xとyの排他的論理和(XOR)をとる
x << y , x >> y シフト演算子。「<<」はxをyビット左にシフト、「>>」はxをyビット右にシフト
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?