Python コンソールの場合:
~True
以下が得られます:
-2
なぜですか? 誰かこの特定のケースをバイナリで説明できますか?
ベストアンサー1
int(True)
は1
。
1
は:
00000001
そして~1
:
11111110
-2
それは2の補数1
1すべてのビットを反転し、結果の数値に1を加えて、結果をバイナリ表現大きさの負の符号を追加します(数値は 1 から始まるため)。
11111110 → 00000001 → 00000010
↑ ↑
Flip Add 1
これは2ですが、符号は負です。MSB1です。
言及する価値がある:
について考えてみるとbool
、それが本質的に数値であることがわかります。 と の2つの値があり、True
それらFalse
は単に整数1と0の「カスタマイズされた」バージョンであり、印刷方法が異なります。サブクラス整数型のint
。
bool
したがって、 とが再定義されstr
てrepr
異なる表示になることを除けば、それらは 1 と 0 とまったく同じように動作します。
>>> type(True)
<class 'bool'>
>>> isinstance(True, int)
True
>>> True == 1
True
>>> True is 1 # they're still different objects
False