当前位置: 首页 > news >正文

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)

http://www.lryc.cn/news/444318.html

相关文章:

  • vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
  • C++ 简介
  • shardingjdbc分库分表原理
  • C++泛型编程:模版
  • 一道涉及 Go 中的并发安全和数据竞态(Race Condition)控制的难题
  • 如何降低H5商城系统的开发成本
  • 为什么越来越多的网工运维转行网络安全?_idc运维转网络安全工程师_系统运维转行网安
  • 【TabBar嵌套Navigation案例-产品推荐页面-UICollectionView-结合xib使用 Objective-C语言】
  • java.nio.ByteBuffer的 capacity, limit, position, mark
  • 握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日
  • 电商跨境电商商城系统/网上商城接口/电商数据接口详情
  • openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面
  • 180多个GIS地理空间定义术语中英文对照配图
  • Vue(14)——组合式API①
  • 【图像检索】基于颜色模型的图像内容检索,matlab实现
  • 看过来——量子计算中一个神奇符号的解释
  • 传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】
  • Java设计模式全面解析
  • spring全家桶使用教程
  • REST-系统架构师(六十九)
  • SAP B1 营销单据 - 复制从复制到总结
  • css设置overflow:hiden行内元素会发生偏移的现象
  • 使用多个 GitHub 账号的 SSH 配置与常见问题排查
  • sql语法学习
  • 滚雪球学SpringCloud[5.3讲]: 配置管理中的高可用与容错
  • 电商安全新挑战:筑起数字防御长城,守护业务与数据安全
  • Python 单元测试:深入理解与实战应用20240919
  • 二、MySQL环境搭建
  • mongoDB 读取数据python版本实现
  • java Nio的应用