190 Reverse Bits 颠倒二进制位
颠倒给定的32位无符号整数的二进制位。
例如,给定输入 43261596(二进制表示为 00000010100101000001111010011100 ),返回 964176192(二进制表示为 00111001011110000010100101000000)。
问题进阶:
如果多次调用这个函数,你将如何优化它?
详见:https://leetcode.com/problems/reverse-bits/description/
Java实现:只需要把要翻转的数从右向左一位位的取出来,如果取出来的是1,将结果res左移一位并且加上1;如果取出来的是0,将结果res左移一位,然后将n右移一位即可
public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int res=0; for(int i=0;i<32;++i){ if((n&1)==1){ res=(res<<1)+1; }else{ res=res<<1; } n=n>>1; } return res; } }
参考:https://www.cnblogs.com/grandyang/p/4321355.html