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:

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

**
总结:

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);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,173评论 19 139
  • 代码 //byte System.out.println("\n基本类型:byte 二进制位数:" + Byte....
    h小阅读 508评论 1 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,218评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 13,059评论 0 33
  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,229评论 0 4

友情链接更多精彩内容