【書き方は】Pythonのお勉強 Part19【一通り】
■ このスレッドは過去ログ倉庫に格納されています
0233デフォルトの名無しさん
2007/06/18(月) 19:57:43正の値しか想定してない場合はそれでいいけど
負の値も受け入れる必要があるときは
「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
■ このスレッドは過去ログ倉庫に格納されています