● 2進数
頭に「0b」を付ける
例)
0b001 ※ 1
0b111 ※ 7
0b1111111111 ※ 1023
● 8進数
頭に「0o」を付ける
例)
0o1 ※ 1
0o11 ※ 9
0o111 ※ 73
● 16進数
頭に「0x」を付ける
例)
0x1 ※ 1
0x11 ※ 17
0x111 ※ 273
【メモ】
2進数、8進数、16進数それぞれの型式で出力したい場合は以下の関数を使う
例)
bin( 10 ) ※ 0b1010
oct( 10 ) ※ 0o12
hex( 10 ) ※ 0xa
2進数の値をビット単位で演算できる
● 理論積、理論和、排他的理論和
演算子 例 説明
-----+--------+----------------------------------------------------------------
& a & b 理論積(AND。両ビットともに1のときは「1」)
| a | b 理論和(OR。 どちらかのビットが1なら「1」)
^ a ^ b 排他的理論和(XOR。比較したビットの値が異なるときは「1」)
~ ~a ビット反転(NOT。ビットの「0」「1」を反転させる)
例)
0101 0101 0101
& 0011 | 0011 ^ 0011
------- -------- -------
0001 0111 0110
● 左シフト、右シフト
演算子 例 説明
-----+----------+----------------------------------------------------------------
<< a << 1 左シフト。ビットを左にずらす。値は2倍になる
>> a >> 1 右シフト。ビットを右にずらす。値は1/2になる
例)
a = 0b11
a = a << 1
print(a) ※ 6
print(bin(a)) ※ 0b110
● ビットマスク
必要な部分を「1」とした値とANDする事で、数値から必要なビットを抜き出す事ができる
例)
a = 0b100110
b = a & 0b111 ※ a に対して下3桁が必要
print(bin(b)) ※ 0b110
【メモ】
途中のビットを抜き出したい場合はビットシフトと組み合わせる
例)2桁目と3桁目を抜き出す
a = 0b100110
b = (a >> 1) & 0b11 ※右シフトして比較する数値を1/2にしてから抜き出す
print(bin(b)) ※ 0b11