Pythonのチルダ(~)演算子とは?ビット反転の仕組みをわかりやすく解説
チルダ(~)演算子とは
Pythonにおける ~(チルダ)は、ビットごとのNOT(補数)演算子です。単一のオペランドに対して作用し、各ビットを反転した結果(補数)を返します。
具体的には、以下のような動作を行います。
- ビットが 1 の場合 → 0 を返す
- ビットが 0 の場合 → 1 を返す
計算例:a = 60 の場合
たとえば、変数 a に 60 を代入すると、2進数では 0011 1100 と表されます。この値にチルダ演算子を適用すると、結果は -61 になります。
これは、Pythonが負の整数を2の補数(two's complement)形式で表現しているためです。一般に ~x は -(x + 1) と等しくなるため、~60 = -61 という結果になります。
>>> a = 60
>>> bin(a)
'0b111100'
>>> b = ~a
>>> a
60
>>> b
-61
>>> bin(b)
'-0b111101'
ポイントまとめ
bin() 関数を使うことで、整数を2進数表現で確認できます。~a の結果である -61 は -0b111101 として表示され、元の値 60(0b111100)との関係がわかります。
このように、チルダ演算子は「すべてのビットを反転する」操作であり、実用上は ~x == -(x+1) という性質を覚えておくと便利です。フラグ管理やマスク処理など、低レベルのビット操作が必要な場面で活用されます。
-
Pythonのアスタリスク(*)演算子とは?意味と使い方を徹底解説
Pythonにおけるアスタリスク(*)演算子の役割Pythonでは、アスタリスク(*)演算子が複数の意味を持って使われます。文脈によって動作が異なるため、それぞれの用途を理解しておくことが重要です。主な使い方は以下の3つです。数値型同士の乗算(掛け算)文字列・リスト・タプルなどのシーケンス型の繰り返し関数定義における可変長引数の受け取り1. 数値型に対する乗算演算子数値データ型に対して * を使うと、通常の掛け算として機能します。整数・浮動小数点数・複素数のいずれにも対応しています。>>> a = 10; b = 20 >>> a * b 200 >
-
Pythonのドット(.)とは?属性やメソッドへのアクセス方法をわかりやすく解説
Pythonにおける「ドット(.)」の基本 Pythonでは、ほぼすべての要素がオブジェクトとして扱われます。そして、すべてのオブジェクトには、それぞれ固有の属性(アトリビュート)とメソッドが備わっています。オブジェクトと、それらの属性やメソッドとをつなぐ役割を果たすのが、「ドット(.)」という記号です。 具体例:Dogクラスを使って理解しよう 例えば、「Dog(犬)」というクラスがあるとします。このとき、Fidoという名前の犬は、Dogクラスのインスタンス(オブジェクト)に相当します。 class Dog: pass Fido = Dog() このクラスに eats()(食べ