xxhash函数试图添加超过uint32 max?

时间:2016-08-07 06:05:37

标签: c

我不明白this xxhash函数如何能够添加比uint32可以存储的值更大的值。有人可以解释为什么这种魔法是可能的吗?

    static const U32 PRIME32_1 = 2654435761U;
    static const U32 PRIME32_2 = 2246822519U;
    ...
    U32 v1 = seed + PRIME32_1 + PRIME32_2;

1 个答案:

答案 0 :(得分:3)

标准要求标准无符号整数类型通过“包装”模值FOO_MAX + 1来处理溢出/下溢。 (例如UINT32_MAX是保持最大值uint32_t

的宏

假设U32引用uint32_t,则以模4294967296为基础执行添加。