Два странных числа в функции moosefs strerr init
Я только начинаю читать исходный код moosefs, в самом начале основной функции (mfscommon/main.c) она вызывает strerr_init
, в котором есть сегмент, содержащий 2 очень больших числа, и я просто не могу понять, для чего они. Вот часть этого кода:
for (n=0 ; errtab[n].str ; n++) {
hash = errtab[n].num;
disp = ((hash * 760092119) & (errhsize-1)) | 1; // number 1
hash = ((hash * 1905886897) & (errhsize-1)); // number 2
while (errhash[hash].str!=NULL && errhash[hash].num != errtab[n].num) {
hash+=disp;
hash&=(errhsize-1);
}
if (errhash[hash].str==NULL) {
errhash[hash] = errtab[n];
}
}
Числа, которые меня беспокоят, - 760092119 и 1905886897. Поскольку в нем используется побитовая операция, я изменил их на двоичный формат, чтобы понять, но до сих пор не вижу сквозного.
760 092 119 = 0b0101101010011100001010111010111
1 905 886 897 = 0b1110001100110011000011010110001