ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
一覧
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
& | AND(両方 1 なら 1) | 0b1100 & 0b1010 | 0b1000 = 8 |
| | OR(どちらか 1 なら 1) | 0b1100 | 0b1010 | 0b1110 = 14 |
^ | XOR(異なれば 1) | 0b1100 ^ 0b1010 | 0b0110 = 6 |
~ | NOT(ビット反転) | ~12 | -13 |
<< | 左シフト(2 倍) | 3 << 2 | 12 |
>> | 右シフト(1/2 倍) | 12 >> 2 | 3 |
^ はべき乗ではありません。べき乗は ** です。
a, b = 0b1100, 0b1010 # 12, 10
print(bin(a & b)) # 0b1000
print(bin(a | b)) # 0b1110
print(bin(a ^ b)) # 0b110
print(bin(a << 2)) # 0b110000
print(bin(a >> 2)) # 0b11
print(f"{a:08b}") # 00001100 桁を揃えて表示
print(int("1100", 2)) # 12 2 進文字列から int
~ と負数の考え方
Python の int には桁数の上限が無いため、負数は「上位に符号ビットが無限に続く 2 の補数」として扱われます。
print(~12) # -13 ~x == -x - 1
print(~0) # -1
print(~-1) # 0
# 32bit の値として見たいときはマスクする
x = -13
print(x & 0xFFFFFFFF) # 4294967283
print(f"{x & 0xFFFFFFFF:032b}") # 11111111111111111111111111110011
シフトの挙動
print(1 << 100) # 1267650600228229401496703205376 桁あふれしない
print(-8 >> 1) # -4 符号を保つ(算術シフト)
print(-1 >> 10) # -1 何回シフトしても -1 のまま
# 負のシフト量は例外
# print(1 << -1)
# ValueError: negative shift count
Java の >>>(符号なし右シフト)に相当する演算子はありません。必要ならマスクしてから右シフトします。
フラグ管理
READ, WRITE, EXEC = 1, 2, 4 # 0b001, 0b010, 0b100
perm = READ | WRITE # 立てる
print(perm) # 3
print(bool(perm & WRITE)) # True 立っているか
perm &= ~WRITE # 下ろす
print(bool(perm & WRITE)) # False
perm ^= READ # 反転
print(perm) # 0
実務では enum.Flag を使うほうが安全で読みやすくなります。
from enum import Flag, auto
class Perm(Flag):
READ = auto()
WRITE = auto()
EXEC = auto()
p = Perm.READ | Perm.WRITE
print(p) # Perm.READ|WRITE
print(Perm.WRITE in p) # True
print(p & Perm.EXEC) # Perm.0 (空)
集合演算にも同じ記号を使う
a, b = {1, 2, 3}, {2, 3, 4}
print(a & b) # {2, 3} 積集合
print(a | b) # {1, 2, 3, 4} 和集合
print(a ^ b) # {1, 4} 対称差
print(a - b) # {1} 差集合
# 辞書のマージは | (Python 3.9 以降)
print({"a": 1} | {"b": 2}) # {'a': 1, 'b': 2}
よく使うイディオム
n = 12
print(n & 1 == 0) # True 偶数判定(n % 2 == 0 でも可)
print(n & (n - 1) == 0) # False 2 のべき乗か(8 なら True)
print(bin(n).count("1")) # 2 立っているビット数
print(n.bit_count()) # 2 Python 3.10 以降はこちら
print(n.bit_length()) # 4 表現に必要なビット数
x, y = 3, 5
x, y = y, x # 交換は XOR ではなくアンパックで書く
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?