我想優化一些代碼,這看起來很簡單,但給我很難。 所以基本上,我試圖讓一個數字的值爲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