2个正数的乘法给出否定结果

时间:2012-09-30 09:33:18

标签: java int bloom-filter

  

可能重复:
  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

2 个答案:

答案 0 :(得分:2)

根据mz的数量大小,使用long可能就足够了。如果您需要更大的数字,请考虑使用BigInteger等类。

答案 1 :(得分:0)