web-dev-qa-db-ja.com

(〜0L)はどういう意味ですか?

私はいくつかのX11 ctypesコーディングを行っています。Cを知りませんが、これを理解するのに助けが必要です。

以下のCコード(C++ではないかもしれません)では、(~0L) どういう意味ですか? JavascriptおよびPython ~0 手段 -1

812   int result = GetProperty(window, property_name,
813                            (~0L), // (all of them)
814                            &type, &format, &num_items, &properties);

ありがとう

13
Noitidart

0Lは、すべてのビットがゼロに設定されたlong整数値です。これは一般に0の定義です。 ~はすべてのビットを反転することを意味し、すべてのビットが1に設定されたlong整数が残ります。

2の補数演算(ほぼ普遍的)では、すべてのビットが1に設定された符号付きの値は-1です。

~0Lの代わりに-1Lを使用する理由は、意図を明確にするためです。これは、数値としてではなく、ビットのコレクションとして使用することを意図しています。

18
Mark Ransom

Long型のゼロのビット単位の補数。

3
Bill