Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C xxhash函数试图添加的最大值超过uint32?_C - Fatal编程技术网

C xxhash函数试图添加的最大值超过uint32?

C xxhash函数试图添加的最大值超过uint32?,c,C,我不明白函数如何能够添加比uint32存储的值更大的值。有人能解释为什么这个魔法是可能的吗 static const U32 PRIME32_1 = 2654435761U; static const U32 PRIME32_2 = 2246822519U; ... U32 v1 = seed + PRIME32_1 + PRIME32_2; 该标准要求标准无符号整数类型通过“包装”值moduloFOO_MAX+1来处理溢出/下溢。(例如,UINT32\u MA

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

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

该标准要求标准无符号整数类型通过“包装”值modulo
FOO_MAX+1
来处理溢出/下溢。(例如,
UINT32\u MAX
是保存最大值的宏
UINT32\u t


假设
U32
指的是
uint32\u t
,则加法是按模执行的
4294967296

,我想说这与
v1=seed+606290984没有什么不同v1=seed*PRIME32_1+PRIME32_2因为这是正确的方法来制作一个。