可能重复:
How does Java handle integer underflows and overflows and how would you check for it?
Multiplication of two int’s gets negativ
我的程序是一个bloom过滤器的实现。但是,当我将哈希函数结果存储在位数组中时,(form f(i) = (a*i + b) % m
的函数,其中a,b,i,m都是正整数)给我一个负面结果。问题似乎在于a * i的计算结果是负面的。
忽略代码中的print语句;那些是为了调试。基本上,这段代码中temp的值是负的,所以我得到ArrayOutOfBoundsException
。
m
是位数组长度,z
是正在使用的散列函数的数量,S
是属于此bloom过滤器和{{1}的成员的值集合为哈希函数f1,f2,...,fz存储a和b的值。
H