Sve*_*sli 5 delphi bit-manipulation
我有一个变量vBit,它是一个无符号的int64.我知道只有一个位设置,我需要弄清楚它是哪一个.目前我这样做(在Delphi中):
vPos := -1;
repeat
vBit := vBit shr 1;
inc(vPos);
until vBit = 0;
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?所有位位置都是相同的,因此平均而言算法需要迭代32次.我正在寻找与ands和xors以及诸如此类的优雅技巧.
查找第一个位集与计算零位相同,因此这个hack可能有所帮助.顺便说一下,这是一个非常有用的书签页面.