3

为什么返回负数?以及如何使返回值变为正值?

键盘输入:ABCD123

for(int a=0; a<keyInput.length(); a++){
        key = ((key << 5)+key)^keyInput[a];
    }

return key;
4

2 回答 2

2

将 'key' 设为无符号类型,例如 ' unsigned int'。

它变为负数的原因是因为对于有符号类型,高位表示符号。一旦哈希值大于 0x7FFFFFFF,符号位变为“1”并且值变为负数。无符号类型不使用符号位。太大的值继续保持积极。

于 2013-02-13T04:47:45.817 回答
1

声明key为无符号长整数应该可以解决问题。

于 2013-02-13T04:47:28.020 回答