"%b" % -1 #=> "..1" "%b" % -2 #=> "..10" "%b" % -3 #=> "..101" "%b" % -4 #=> "..100"
を見て思ったんですが、ビット長に制限が無ければ、負の整数の 2 進数表記はある桁以上が全部 1 と考えられるんですね。逆に正の整数はある桁以上が 0 と考えられる。
じゃあ、..010101 みたいに、ある桁以上が 0 と 1 を交互に繰り返す数字って考えられるのかなと思ったんですが。
a = ..010101 a*2 = ..101010 a*2 + a = ..101010 + ..010101 = ..111111 = -1 a = -1/3
あれ?