C xxhash函数试图添加的最大值超过uint32?
我不明白函数如何能够添加比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
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代码>因为这是正确的方法来制作一个。