我想优化一些代码,这看起来很简单,但给我很难。 所以基本上,我试图让一个数字的值为1,如果它大于0.问题是我不想使用任何比较,因为它们是非常昂贵的,得到一个没有比较会节省我40秒,因为它被称为很多。所以我想要的是比较明智的操作员,加,减,除,乘。如果大于0,则为1 1
额外:数量将永远仅是1或2
的类型是无符号整型。
全算法:
DWORD num = (blockNum/0xAA) * blockStep[0];
switch (blockNum/0xAA)
{
case 0:
return num + hashOffset;
default:
num += ((blockNum/0x70E4) + 1) << (BYTE)packageSex;
switch (blockNum/0x70E4)
{
case 0:
return num + hashOffset;
default:
return num + (1 << (BYTE)packageSex) + hashOffset;
}
}
所以类型是'int',那么? – 2012-07-29 03:11:46
如果数字是2,则它变为1.如果它是1,则它保持为1.有什么区别? – ghoti 2012-07-29 03:12:00
该类型是一个无符号整数。另外,如果数字为2且只有位运算符,我将如何获得数字1? – hetelek 2012-07-29 03:13:16