C言語と挙動が違うのは、Pythonが通常の整数→多倍長整数への自動拡張を
するからであって、ビット演算だけでなく足し算のオーバーフローの挙動が違う。
0xffffffff + 1 が 0x100000000 なのに、 0xffffffff << 1 が 0xfffffffe になるべき
とかいうヤツはバカ。

だいたい、C言語なんていう環境依存を許容しまくりの言語の挙動をマネる
なんて理想からかけ離れている。