嘿!我在http://www.gnu.org/software/m68hc11/examples/primes_8c-source.html上看到了这段代码。
我注意到在某些情况下,他们使用了十六进制数字,就像在第134行中:
for (j = 1; val && j <= 0x80; j <<= 1, q++)
那么为什么他们要使用0x80呢?我并不太擅长于十六进制,但我找到一个在线的十六进制转十进制工具,它告诉我0x80等于128。
还有,在第134行之前,在第114行,他们有这个:
small_n = (n & 0xffff0000) == 0;
这个十六进制数转十进制后为4294901760。在这一行中,他们进行位与运算并将结果与0比较?
为什么不直接使用这个数字呢? 能否解释一下,并给出其他情况的示例。
我也看到过很多只有十六进制数字的大段代码,从未真正理解为什么要这样做 :(