Leetcode - Reverse Bits

Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
Follow up:If this function is called many times, how would you optimize it?
Related problem: Reverse Integer
Credits:Special thanks to @ts for adding this problem and creating all test cases.

My code:

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int reverse = 0;
        for (int i = 0; i < 31; i++) {
            reverse = (n & 1) | reverse;
            reverse = reverse << 1;
            n = n >> 1;
        }
        reverse = (n & 1) | reverse;
        return reverse;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        System.out.println(test.reverseBits(1));
    }
}

My test result:

Leetcode - Reverse Bits_第1张图片

这次作业还是挺简单的,应该说很简单,就写了几分钟。是最简单的位操作。难的还在后头呢。

**
总结:

1、基本类型:byte 二进制位数:8
2、包装类:java.lang.Byte
3、最小值:Byte.MIN_VALUE=-128
4、最大值:Byte.MAX_VALUE=127
5、
6、基本类型:short 二进制位数:16
7、包装类:java.lang.Short
8、最小值:Short.MIN_VALUE=-32768
9、最大值:Short.MAX_VALUE=32767
10、
11、基本类型:int 二进制位数:32
12、包装类:java.lang.Integer
13、最小值:Integer.MIN_VALUE=-2147483648
14、最大值:Integer.MAX_VALUE=2147483647
15、
16、基本类型:long 二进制位数:64
17、包装类:java.lang.Long
18、最小值:Long.MIN_VALUE=-9223372036854775808
19、最大值:Long.MAX_VALUE=9223372036854775807
20、
21、基本类型:float 二进制位数:32
22、包装类:java.lang.Float
23、最小值:Float.MIN_VALUE=1.4E-45
24、最大值:Float.MAX_VALUE=3.4028235E38
25、
26、基本类型:double 二进制位数:64
27、包装类:java.lang.Double
28、最小值:Double.MIN_VALUE=4.9E-324
29、最大值:Double.MAX_VALUE=1.7976931348623157E308
30、
31、基本类型:char 二进制位数:16
32、包装类:java.lang.Character
33、最小值:Character.MIN_VALUE=0
34、最大值:Character.MAX_VALUE=65535
**
前段时间会华科忙毕业,忙着和同学道别。一年没见,刚刚花了两天时间和同学们熟悉起来,却又要说道别了。然后一个人在学校走了一圈,最后坐在操场上看学弟们踢球,当时的心境,只有与我相同经历者才能感受吧。
然后刷题就又落下了一大段。
Anyway, Good luck, Richardo!

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int r = 0;
        for (int i = 0; i < 31; i++) {
            if ((n & 1) == 1) {
                r |= 1;
            }
            n >>= 1;
            r <<= 1;
        }
        if ((n & 1) == 1) {
            r |= 1;
        }
        return r;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        int ret = test.reverseBits(1);
        System.out.println(ret);
    }
}

你可能感兴趣的:(Leetcode - Reverse Bits)