>>222
正の値しか想定してない場合はそれでいいけど
負の値も受け入れる必要があるときは
「2の補数」を求めてから jukarani() に渡す必要がある。
具体的には例えば jukarani(0x100000000+n) if n < 0 else jukarani(n) とする。

>>231
ワンライナーにしてみた。

正の値の場合:
> n = 15
> s = "".join(str(((0x100000000+n if n<0 else n)>>(31-i))&1) for i in range(32))
> s
'00000000000000000000000000001111'
> int(s, 2)-0x100000000 if s[0] == '1' else int(s, 2)
15

負の値の場合:
> n = -15
> s = "".join(str(((0x100000000+n if n<0 else n)>>(31-i))&1) for i in range(32))
> s
'11111111111111111111111111110001'
> int(s, 2)-0x100000000 if s[0] == '1' else int(s, 2)
-15L