hashing what we need is way to compress the huge range of numbers we obtain from the numbers-multiplied-by-powers system into range that matches reasonably sized array how big an array are we talking about for our english dictionaryif we only have , wordsyou might assume our array should have approximately this many elements howeverit turns out we're going to need an array with about twice this many cells (it will become clear later why this is so so we need an array with , elements thus we look for way to squeeze range of to more than , , , , into the range to , simple approach is to use the modulo operator (%)which finds the remainder when one number is divided by another to see how this workslet' look at smaller and more comprehensible range suppose we squeeze numbers in the range to (we'll represent them by the variable largenumberinto the range to (the variable smallnumberthere are numbers in the range of small numbersso we'll say that variable smallrange has the value it doesn' really matter what the large range is (unless it overflows the program' variable sizethe java expression for the conversion is smallnumber largenumber smallrangethe remainders when any number is divided by are always in the range to for example % gives and % is this is shown in figure we've squeezed the range - into the range - -to- compression ratio figure range conversion similar expression can be used to compress the really huge numbers that uniquely represent every english word into index numbers that fit in our dictionary arrayarrayindex hugenumber arraysizethis is an example of hash function it hashes (convertsa number in large range into number in smaller range this smaller range corresponds to the index numbers in an array an array into which data is inserted using hash function is called hash table