c++ - 如何将两个正整数映射到一个唯一的整数?

标签 c++ c

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

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

我尝试了 Cantors 配对函数,但 Cantors 配对函数返回给我一个 128 位的“z”,因为 Cantors 配对函数涉及乘法。我不希望 z 映射到 128 位,因为现代计算机的处理限制只有 64 位。

有什么办法吗?一点点碰撞对我来说是可以接受的。

最佳答案

如果您想对整个 64 位整数范围执行此操作,那么这是不可能的。

您的函数有 2^64 * 2^64 = 2^128 个可能的输入,但您只有 2^64 个不同的输出,这意味着必须至少有 2^64 个数字映射到同一个整数,这远远超过 一点点冲突

关于c++ - 如何将两个正整数映射到一个唯一的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206912/

相关文章:

c++ - 在没有安装 Qt VS Tools 的情况下编译 Qt/MsBuild 格式的 Qt 项目

c - 我怎样才能更好地阅读我的套接字?

c++ - 中央可点击的 MSDN,如 Linux 系统/C/C++ 标准库文档

c++ - 我无法在 C++ Code::Blocks 中获得二等奖

c# - 从 C# 调用时 CFB 模式的截断输出

正则表达式中的 C++ 特殊字符

c - c中的自引用结构

c - C 中可变大小数组的陷阱

c - typedef 指针常量怪异

java - opencv - 匹配模板