leetcode190-颠倒二进制位
发布日期:2025-04-05 03:19:20 浏览次数:9 分类:精选文章

本文共 698 字,大约阅读时间需要 2 分钟。

某人遇到了一个有趣的编程问题,需要将给定的32位无符号整数的二进制位进行颠倒。开始时看起来有些复杂,但经过仔细思考后发现其实不是特别难。下面是他对解决问题的思路和实现过程的总结:

  • 问题理解:首先明确题目要求颠倒二进制数的各位。例如,示例1中的二进制数00000010100101000001111010011100颠倒后变为00111001011110000010100101000000,对应的数值为964176192。

  • 操作思路

    • 获取最低位:使用(n & 1)来判断当前二进制位是否为1。
    • 移位处理:将n右移一位,这样原来的第二位将出现在末位。
    • 构造结果:在每一步将得到的位逐步左移到结果中,确保每一位能够正确摆放。
  • 代码实现

    public class Solution {    public int reverseBits(int n) {        int res = 0;        for (int i = 0; i < 32; i++) {            res <<= 1;            if ((n & 1) != 0) {                res++;            }            n >>= 1;        }        return res;    }}
  • 注意事项

    • Java中使用有符号整数处理时,要确保正确处理符号位,不影响二进制位的颠倒。
    • 颠倒二进制位时,直接处理位移,而不是管理符号位,以确保正确性。
  • 通过上述步骤和代码,该问题得以解决,确保无论输入的二进制数如何,都能正确反转并返回结果。

    上一篇:leetcode191-打家劫舍
    下一篇:Leetcode160 两个链表是否相交

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年04月27日 17时26分07秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章