求一个unsigned数是否是2的某次幂,如果是求出是2的多少次幂(要求不能用循环)
2016-03-15 14:10
246 查看
static const int powertable[256] = { -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; int getPower(unsigned v){ if ((v & (v - 1)) != 0){ return -1; } return powertable[v >> 24] >= 0 ? powertable[v >> 24] + 24 : powertable[v >> 16] >= 0 ? powertable[v >> 16] + 16 : powertable[v >> 8] >= 0 ? powertable[v >> 8] + 8 : powertable[v]; }
相关文章推荐
- iOS:编译错误Undefined symbols for architecture i386: _OBJC_CLASS_$_XXX", referenced from: error
- jQuery(三)
- TMD 投了2天简历
- iOS网络请求GET&POST,同步&异步
- 怎么实现ZBrush与数位板雕刻模型的结合运用
- tomcat6优化配置(参考网络资源整理)
- Tomcat 输出日志文件 catalina.out 大小控制
- 通过htaccess实现301重定向常见的方法
- composer学习文章
- 解决Android的EditText的addTextChangedListener监听的死循环问题
- MySQL性能优化的最佳经验,随时补充
- 【ML】ICLR2016_Delving Deeper into Convolutional Networks
- int,long,long long,__int64数据类型的取值范围
- 推荐 git community book 中文版
- hrbust 哈理工oj 1989 营救小组【BFS】
- 异常处理在 ASP.NET Web API
- java将图片存入数据库
- MyEclipse 快捷键
- IOS中的多线程
- 数字 1 转换成 “一” (10-> “十”,25-> “二十五”,.....)