Leetcode 颠倒二进制位

server/2024/11/30 4:44:43/

在这里插入图片描述

以下是对所提供的代码进行中文解释以及其算法思想分析:


算法思想

这段代码的目标是反转一个32位整数的二进制位。

核心思路是:

  1. 逐位提取: 利用位操作从输入整数的最低位开始,逐位提取其二进制位。
  2. 逐位插入: 将提取到的位插入到结果整数中,并将结果按要求向左移位以构建反转后的二进制数。
  3. 依次处理: 将输入整数右移以处理其余的位,直到所有32位都被处理完成。

通过这种逐位操作,无论是正数还是负数,都可以实现反转操作。Java 使用补码形式表示有符号整数,因此不需要额外处理符号问题。


代码逐步解析

public int reverseBits(int n) {int result = 0; // 用于存储反转后的结果for (int i = 0; i < 32; i++) { // 需要处理32位int bit = n & 1; // 提取当前最低位(n的最后一位)result = (result << 1) | bit; // 将结果左移一位,并将提取的位加入到结果中n >>= 1; // 将输入整数右移一位,准备处理下一位}return result; // 返回反转后的整数
}

关键步骤分析

  1. 提取最低位

    int bit = n & 1;
    

    n & 1 是一个位操作,它将提取出整数 n 的最低位。例如:

    • 如果 n = 5 (0101),则 n & 1 = 1
    • 如果 n = 6 (0110),则 n & 1 = 0
  2. 将提取的位加入结果

    result = (result << 1) | bit;
    
    • result << 1 表示将结果的二进制位左移一位,为新提取的位留出位置。
    • | bit 表示将提取的位加入结果。例如:
      • 假设 result = 010 (2),提取的 bit = 1,则操作后 result = 101 (5)
  3. 右移输入整数

    n >>= 1;
    

    将输入整数 n 的二进制位右移一位,以便在下一次循环中处理下一个最低位。

  4. 循环32次

    • 因为输入是一个32位整数,所以需要循环32次,逐一处理所有的位。

输入输出示例

以示例1(输入 n = 43261596)为例:

  • n 的二进制表示为:00000010100101000001111010011100
  • 反转后的结果为:00111001011110000010100101000000
  • 输出整数为:964176192

以示例2(输入 n = -3)为例:

  • n 的二进制补码表示为:11111111111111111111111111111101
  • 反转后的结果为:10111111111111111111111111111111
  • 输出整数为:-1073741825

总结

这段代码的关键在于利用位运算逐位处理,结合移位操作构建反转结果。由于 Java 对有符号整数的补码处理特点,代码对正数和负数均适用,无需特别处理符号问题。


http://www.ppmy.cn/server/146073.html

相关文章

深度学习作业九 RNN-SRN-Seq2Seq

目录 1. 实现SRN &#xff08;1&#xff09;使用Numpy &#xff08;2&#xff09;在1的基础上&#xff0c;增加激活函数tanh &#xff08;3&#xff09;使用nn.RNNCell实现 &#xff08;4&#xff09;使用nn.RNN实现 2. 实现“序列到序列” 3. “编码器-解码器”的简单实…

计算机网络:网络安全

7.1、网络安全概述 1、安全包括哪些方面 数据存储安全应用程序安全操作系统安全网络安全物理安全用户安全教育 2、网络安全面临的问题 1&#xff09;截获——从网络上窃听他人的通信内容。 2&#xff09;中断——有意中断他人在网络上的通信。 3&#xff09;篡改——故意…

通过优化html的清洗来提高对网页RAG的效果

html检索的提升&#xff1a;HtmlRAG 之前在现实的工作场景中也做过很多次RAG&#xff0c;不过那会我的做法大多数是对数据进行结构化&#xff0c;例如做成json或者yaml文件存放进数据库里面。比如我现在有一个Word文档需要处理&#xff0c;那我就会按照一级标题&#xff0c;二…

【python】pip不是内部命令解决方法

【python】pip不是内部命令解决方法 原因解决方法 不会配置环境变量的可以卸载python&#xff0c;重新安装&#xff0c;这两天&#xff0c;我会再出一期安装python的教程&#xff0c;希望对你有帮助 原因 通常情况下&#xff0c;出现“pip不是内部命令”的问题&#xff0c;往往…

微信小程序中的WXSS与CSS的关系及使用技巧

微信小程序中的WXSS与CSS的关系及使用技巧 引言 在微信小程序的开发中,样式的设计与实现是构建用户友好界面的关键。微信小程序使用WXSS(WeiXin Style Sheets)作为其样式表语言,WXSS在语法上与CSS非常相似,但也有一些独特的特性。本文将深入探讨WXSS与CSS的关系,介绍WX…

面试小札:JVM虚拟机

1. 定义与基本概念 - JVM&#xff08;Java Virtual Machine&#xff09;即Java虚拟机&#xff0c;是Java程序的运行核心。它是一个虚构出来的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来运行Java字节码。字节码是一种中间格式&#xff0c;它使得Java程序能…

光伏功率预测!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型时序预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量时序光伏功率预测 (Matlab2023b 多输入单输出) 1.程序已经调试好&#xff0c;替换数据集后&#xff0c;仅运行一个main即可运行&#xff0c;数据格式…

【DVWA】File Inclusion文件包含实战

安能有术无道有道无心&#xff0c;乐得仁心仁义正心行道。 1.File Inclusion(Low) 相关代码分析 <?php// The page we wish to display $file $_GET[ page ];?>可以看到&#xff0c;服务器端对page参数没有做任何的过滤跟检查。 服务器期望用户的操作是点击下面的…