首先算法是白版的,我之前做了一个自己的简单的嵌入式操作系统,就是使用查找位1的位置来进行任务调度的,一开始使用查找表法,这种方法定位速度很快,但是占用很多空间。后来想用循环的方式查找最高有效的bit1位,但是效率不高。有幸看见白版的查找0bit的方法,我就稍加修改了一下,写了一个最高有效bit1查找,可以用在我的小的系统里面了。在此感谢白版的启发@白丁
- int bit1search(unsigned int data)
- {
- int pos = 0;
- if((data | 0x0000ffff) != 0x0000ffff)
- {
- data >>= 16;
复制代码
程序很简单,也是使用二分法的,整体效率比循环稳定。
本文来自论坛,点击查看完整帖子内容。