我在C#程序中有以下简单的等式将数字转换为结果值:
sectorSize = 1 << sectorShift;
是否有某种反向操作可以让我走另一条路?
sectorShift = ???
我知道你可以实现一个循环,但这有点过分。我以前从来没有这样做,所以我不知道,我在网上找不到任何关于它的东西。当sectorSize是2的幂时,我需要的等式只需要产生有效的结果;域名的其他部分可以为我所关心的所有事情下地狱。
答案 0 :(得分:11)
这里有五种方法可以做到这一点。将它们翻译成正确的C#留作练习。 要非常小心。
http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious
坦率地说,我个人总是会随波逐流。我不清楚为什么你认为简单而明显正确的代码是“过度杀伤”。答案 1 :(得分:9)
对数。但由于您不想这样做,请使用循环和/或查找表。