为什么Python的原生hash()
会为-1
和-2
生成冲突?
>>>> hash(-1)
-2
>>>> hash(-2)
-2
我的理解是,Python hash
只会输出所输入数字的确切值 - 这似乎可以保持2^60
和-2^60
:
>>>> hash(2**8)
256
>>>> hash(-2**8)
-256
>>> hash(2**60)
1152921504606846976
>>> hash(-2**60)
-1152921504606846976
在这个例子中-1
有什么特别之处?