将30个整数集中到C中的单个64位整数中

时间:2014-08-03 22:31:11

标签: c int long-integer largenumber

我有一个20x30的数组,其中包含int类型的值。每行应集中到一个数字。例如,考虑一个3x4阵列: | 1 3 6 1 | | 4 2 5 2 | | 8 3 1 5 | 它应该成为:| 1361,4522,8315 | 问题是,我有30个数字,所以我需要30个数字,我使用无符号long long int存储的最大数字是+18,446,744,073,709,551,615,其中只包含20个数字

原始问题: 前一个问题是赋值的一部分,其中我有一个返回Nx30数组的哈希函数。数组的每一行由30个整数组成,并将它们放在一起,表示N个输入数据之一的30位哈希值。

我必须使用基数排序对这些哈希进行排序。我的导师告诉我,我可以匹配64位整数中的那30个数字。鉴于哈希值在0-3的范围内,我可以将它们集中在一个64位数组中,每个使用2位吗?

1 个答案:

答案 0 :(得分:2)

您需要超过64位才能存储30个单位整数。

C语言没有大于64位的内置数字类型。有些编译器支持它们。恕我直言,您最好使用 GMP 或其他支持它的库,而不是依赖于特定的编译器。作为最后一个资源,您可能希望自己实现它,这不是一项非常简单的任务。