如何将两个正整数映射到唯一整数?

Ali*_*ett 0 c c++

给定两个整数,我需要找到一个唯一的整数.也就是说,给定两个整数x和y ..我想找到一个函数f ...,它将这些整数唯一地映射到另一个整数z.也就是说,z = f(x,y)

这里x = 64位整数,y = 64位整数.我想将这些数字映射到z,这样它又是64位整数.

我尝试了Cantors配对功能,但是Cantors配对功能给我一个'z',它是128位,因为Cantors配对功能有一个倍增.我不希望z映射到128位,因为现代计算机的处理限制只有高达64位.

有一些出路吗?我可以接受一点碰撞.

pka*_*zak 7

如果你想为64位整数的整个范围做到这一点,那么这是不可能的.

2^64 * 2^64 = 2^128你的功能可能的输入,但是你只有2^64不同的输出,这意味着必须至少2^64映射到相同的整数远远超过数字a little bit of collision