我正在尝试在MATLAB中实现murmurHash,我已经在C ++中使用了代码。在C ++代码中:
static const uint32_t c1 = 0xcc9e2d51; //(3432918353 in decimal)
.
.
.
k1 *= c1;// k1 is 6649713 before multiplication
在乘法后,它给出结果3117918145(这是mod(3432918353 * 6649713,4294967296),以使其保持在32位无符号整数的边界内)。
但是,在MATLAB中,它给出了结果4294967296,它对于32位无符号整数是最大的。无论如何通过不将数字转换为64位并计算模数wrt 4294967296(最大32位)来克服这个问题?