LeetCode 面试经典150题 190.颠倒二进制位
复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)。
题目:颠倒给定的 32 位无符号整数的二进制位。
提示:
- 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
- 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数
-3,输出表示有符号整数-1073741825。
示例 2:
输入:n = 11111111111111111111111111111101 输出:3221225471 (10111111111111111111111111111111) 解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。
不用管符号,比如示例2,我们输入的整数是正的而且大于Java中int的正数表示范围。所以采用找一个有符号数,它的二进制形式跟我们输入的无符号二进制形式一模一样,我们就把这个有符号数当作无符号数来处理,对其32位都进行颠倒。颠倒后输出结果,把我们的无符号数当作有符号输出即可,我们自己根据补码转换。总而言之,把int n当作无符号数来处理,就把它想象成一个字符串。

思路:

执行的 & >> << | 都是位操作,我们不用关心数据是大端存储还是小端存储,怎么进行位运算、符号什么的,因为我们执行的是位运算操作,编译器会为我处理,我们不用管。想像成直接对一个二进制数执行位操作,其余的不用管。
代码:
public class Solution {// you need treat n as an unsigned valuepublic int reverseBits(int n) {int res = 0; // 反转结果,初始为0表示所有位都为0// 循环处理32位,idx为位索引for (int idx = 0; idx < 32; idx++) {int digit = n & 1; // 获取当前最低位n >>= 1; // 将最低位右移掉res |= (digit << (31 - idx)); // 将最低位反转到实际位置上}return res;}
}
性能:
时间复杂度o(1)
空间复杂度o(1)
相关文章:
LeetCode 面试经典150题 190.颠倒二进制位
复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…...
vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
在利用vulhub靶场搭建环境进行漏洞复现时,我们通常要使用这一步命令: docker-compose up -d 但是经常报错,今天我们来说几个常见的报错以及解决方法: 1.报错提示: ERROR: Couldnt connect to Docker daemon at httpdoc…...
C++ 简介
目录 面向对象程序设计 标准库 ANSI 标准 学习 C C 的使用 标准化 C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言,它综合了高级语言和低级语言的特点…...
shardingjdbc分库分表原理
一 Mysql的瓶颈 二 解决方案 三 hash环算法 四 雪花算法...
C++泛型编程:模版
引言 泛型编程(Generic Programming)是一种编程范式,允许编写与类型无关的代码,从而使程序更加灵活和可重用。在C中,泛型编程主要通过模板(Templates)来实现。模板使得我们可以编写通用…...
一道涉及 Go 中的并发安全和数据竞态(Race Condition)控制的难题
这是一道涉及 Go 中的并发安全和数据竞态(Race Condition)控制的难题。 问题描述: 你需要实现一个并发安全的计数器 SafeCounter,该计数器允许多个 Goroutine 同时对其进行读写操作。计数器会存储每个键的计数值。 具体要求&am…...
如何降低H5商城系统的开发成本
前言 H5商城系统通过多种策略来降低开发成本。以下是对这些策略的详细介绍: 一、选择合适的开发平台 原生开发与跨平台开发:原生开发使用HTML5、CSS3和JavaScript等Web技术,虽然性能更佳、用户体验更好,但开发成本相对较高。而…...
为什么越来越多的网工运维转行网络安全?_idc运维转网络安全工程师_系统运维转行网安
最近越来越多的网工运维小伙伴都在吐槽:干网工、运维多年,薪资还是5.6K,技术也遇瓶颈上不去,考虑转岗或者转行。其中大部分的网工运维小伙伴们纷纷瞄准了高薪高前景的网络安全工程师岗位 网络安全是怎样的岗位? 网络安…...
【TabBar嵌套Navigation案例-产品推荐页面-UICollectionView-结合xib使用 Objective-C语言】
一、接下来,我们来说这个产品推荐页面 1.首先呢,它是一个CollectionViewController,当我点击这个产品推荐的时候, 这个Cell的时候,我要跳到一个CollectionViewController, 所以呢,我们需要先找到产品推荐,然后给它去添加一个targetVC,然后给它push到一个产品推荐的页面…...
java.nio.ByteBuffer的 capacity, limit, position, mark
java.nio.ByteBuffer的 capacity, limit, position, mark Capacity(容量) 定义:缓冲区的总容量,即缓冲区中可以容纳的元素的数量。这个容量在缓冲区创建时被设定,并且之后不能被改变。 用途:它定义了缓冲区…...
握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日
发送模块循环发送0-7,在每个数据传输完成后,间隔5个clk,发送下一个 插入寄存器打拍处理,可以在不同的时钟周期内对信号进行同步,从而减少亚稳态的风险。 记忆科技笔试题:检测出11011在下一个时钟周期输出…...
电商跨境电商商城系统/网上商城接口/电商数据接口详情
电商API接口背景:电商运营中,数据分析这项工作越来越重要,许多品牌方也越来越热衷去做电商数据分析。不过,全面的数据该如何获取呢,此时,电商数据接口的重要性便凸显出来了。 电商API数据接口主要有以下特…...
openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面
效果图: 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分,然后在.h声明右边的openframeworks的UI部分,包括面板ofxPanel,按钮ofx…...
180多个GIS地理空间定义术语中英文对照配图
主动传感器(Active Sensors): [遥感]主动传感器照亮其目标,并测量返回到传感器的反射后向散射。 邻接(Adjacency): [几何]邻接发生在两个对象共享同一边界,并且与公共边或顶点相邻…...
Vue(14)——组合式API①
setup 特点:执行实际比beforeCreate还要早,并且获取不到this <script> export default{setup(){console.log(setup函数);},beforeCreate(){console.log(beforeCreate函数);} } </script> 在setup函数中提供的数据和方法,想要在…...
【图像检索】基于颜色模型的图像内容检索,matlab实现
博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于颜色模型的图像内容检索,用matlab实现。 一、案例背景和算法介绍 这…...
看过来——量子计算中一个神奇符号的解释
量子计算中一个神奇符号是 H ⊗ n \mathcal{H}^{\otimes n} H⊗n 它代表什么呢, 往下看 H ⊗ n \mathcal{H}^{\otimes n} H⊗n 通常在量子力学中表示 n次张量积的希尔伯特空间。 H \mathcal{H} H 表示一个希尔伯特空间,这是量子力学中描述量子态的空间&…...
传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】
(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、TCP 流量控制(★★) 1. 利用滑动窗口实现流量控制 一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得…...
Java设计模式全面解析
23大设计模式(即软件设计中的24种常用设计模式)源自《设计模式:可复用面向对象软件的基础》一书,由四位作者(Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)提出,通常也被称为“Go…...
spring全家桶使用教程
Spring 全家桶是指围绕 Spring 框架构建的一系列子项目和工具,涵盖了企业级应用开发的多个方面,如依赖注入、数据访问、事务管理、Web 开发、消息队列、云服务等。通过 Spring 全家桶,开发者可以构建从简单的 Web 应用到复杂的微服务架构。 …...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
