题解 | #牛群的编码反转#

牛群的编码反转

https://www.nowcoder.com/practice/fbbef1b8d84b45a49f95ebf63a3b353b

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    public int reverseBits (int n) {
        // write code here
        n = (n >>> 16) | (n << 16); // 交换每16位
        n = ((n & 0xFF00FF00) >>> 8) | ((n & 0x00FF00FF) << 8); // 交换每8位
        n = ((n & 0xF0F0F0F0) >>> 4) | ((n & 0x0F0F0F0F) << 4); // 交换每4位
        n = ((n & 0xCCCCCCCC) >>> 2) | ((n & 0x33333333) << 2); // 交换每2位
        n = ((n & 0xAAAAAAAA) >>> 1) | ((n & 0x55555555) << 1); // 交换每1位
        return n;
    }
}

Java代码,这道题用了位掩码写的,嘿嘿,这样看起来时间复杂度会很低,但是不是正常结题答案,反正那么多答案了,我就写一个不一样的。

这个题目涵盖了以下几个知识点:

  1. 位运算、位掩码
  2. 位操作技巧
  3. 分治法,逐步缩小范围

代码的文字解释如下:

  • 使用右移和左移操作来交换每16位的位置。
  • 使用位掩码 0xFF00FF00 和位运算,分别交换每8位、每4位、每2位和每1位的位置。
  • 最后,返回反转后的二进制编码 n
全部评论

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
04-25 10:45
东南大学 Java
点赞 评论 收藏
分享
数开小菜鸡_暂退沉淀版:大二第三段,还是字节,这下真得点点举办了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务