moosefs中的两个奇怪的数字函数是strerr init

时间:2013-05-06 09:10:52

标签: c moosefs

我刚刚开始阅读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 个答案:

没有答案