我想写一个函数,返回最接近的2次幂.例如,如果我的输入是789,那么输出应该是1024.有没有办法不使用任何循环而只使用一些位运算符来实现这一点?
判断Bit Twiddling Hacks.你需要得到以2为底的对数,然后再加1.32位值的示例:
向上舍入到2的下一个最高幂 unsigned int v; // compute the next highest power of 2 of 32-bit v v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++;
向上舍入到2的下一个最高幂
unsigned int v; // compute the next highest power of 2 of 32-bit v v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++;
延伸到其他宽度应该是显而易见的.
Java核心技术面试精讲 -〔杨晓峰〕
面试现场 -〔白海飞〕
从0打造音视频直播系统 -〔李超〕
分布式技术原理与算法解析 -〔聂鹏程〕
Electron开发实战 -〔邓耀龙〕
SRE实战手册 -〔赵成〕
物联网开发实战 -〔郭朝斌〕
A/B测试从0到1 -〔张博伟〕
代码之丑 -〔郑晔〕
说透数字化转型 -〔付晓岩〕
手把手带你写一个Web框架 -〔叶剑峰〕
手把手教你落地DDD -〔钟敬〕
无涯教程 - PHP教程
无涯教程 - Derby教程
无涯教程 - C#教程
无涯教程 - JSoup教程
无涯教程 - Swift教程
无涯教程 - Nginx教程
无涯教程 - TCP/IP网络编程教程
无涯教程 - Python中文指南教程