python3.doc_06
R e i - D r e a m
for Laravel
TOP > Python3 > Python基本(数値・ビット)
Guest
login

最終投稿日:2022年6月18日

Python基本(数値・ビット)
2進数、8進数、16進数
● 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
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる