Два странных числа в функции 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

0 ответов

Другие вопросы по тегам