Reverse bits of a given 32 bits unsigned integer.

For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).

Follow up:
If this function is called many times, how would you optimize it?

思路

基本思路即分别提取出当前最高位和最低位的信息,进行交换即可,然后最高位置--,最低位位置++,直到相遇;32位数,所以0-15和16-31分别进行操作。这边我先判断最高位,如果为1,则判断最低位,如果也为1,不进行操作,如果为0,则最低为变成1,这边用到了位移,然后最高位做减法,则变为0。如果最高位为0,同理,做相反的操作即可。

class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int cur;
for(int i = 31 ; i >= 16;i--){
if(n&(1<<i)){
cur = n&1<<(31-i);
if(cur == 0){
n -= 1<<i;
n += 1<<(31-i);
} }
else{
cur = n&1<<(31-i);
if(cur != 0){
n += 1<<i;
n -=1<<(31-i);
}
}
}
return n;
}
};

  

最新文章

  1. VS配置路径和宏
  2. 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)
  3. Win32编程:窗口类样式+窗口外观样式+窗口显示样式
  4. nc 反弹链接
  5. java 复习002
  6. Delphi文件映射
  7. python select epoll poll的解析
  8. Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置等
  9. python语法_文件操作
  10. jmeter的新增函数说明
  11. cds view 创建和调用
  12. Spring+SpringMVC+mybatis整合以及注解的使用(三)
  13. JAVA生成六位随机数
  14. topcoder srm 435 div1
  15. Vue下拉刷新组件
  16. java去除字符串后面的\0
  17. node学习笔记1——配置node环境变量及执行node文件
  18. Duilib Edit编辑框禁止输入中文的方法
  19. 问题集录--从初级java程序员到架构师,从小工到专家
  20. RabbitMQ--学习资源汇

热门文章

  1. nodejs的第一天学习笔记
  2. MPICH3 配置安装问题列表
  3. Mac环境下 配置Python数据分析环境
  4. js检测浏览器屏幕宽度
  5. ORACLE日期格式
  6. 深入理解JS闭包
  7. Visual Studio 拓展插件——Image Optimizer
  8. K2BPM怎么让金融数据更有意义?
  9. 微信JS-SDK DEMO页面和示例代码
  10. 64位Win7系统下vs2010调试无法连接oracle