1. ホーム
  2. python

[解決済み】 "int(time.time()*1000.0) & 0x7FFFFFFF" の "& 0x7FFFFF" とはどういう意味か?

2022-02-02 17:45:44

質問

次のような値があります。

start = int(time.time()*1000.0) & 0x7FFFFFFF

の目的は何ですか? & 0x7FFFFFFF ?

解決方法は?

ビットマスクです。低レベルの計算では、レジスタのビットをクリアするための効率的な方法です。この場合、32ビット整数の符号付きビットを除いたすべてのビットがマスクに設定されています。符号付きビットとは、数値が正か負かを判断するためのビットです。AND演算( & このマスクは符号付きビットを0にするので、数値は常に正の値になります。

a && bTrue が両方ある場合 abTrue .
a & b1 が両方ある場合 ab1 を、a,bの2進数の各桁に対応させる。

Pythonはバイナリ・リテラルをサポートしており、そのために 0b という接頭辞があります。以下は、3ビットの数値が and を一緒に編集します。

>>> 0b101 & 0b110 == 0b100
True
>>> 0b011 & 0b111 == 0b011
True
>>> 0b011 & 0b110 == 0b010
True