C# 颠倒二进制位

news2024/11/25 14:51:32

190 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。

提示:

请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。

示例 1:

输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:

输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。

提示:

输入是一个长度为 32 的二进制字符串

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-bits

解决方案:

提供思路

1)最直观的做法是依次遍历 n 的二进制表示的每一位,对于 0≤i<32,n 的二进制表示的从低到高第 i 位在颠倒二进制位之后是从低到高第 31−i 位。

2)解法一需要遍历整数 n 的二进制表示的每一位,这道题存在时间复杂度更低的分治解法。

将整数 n 的二进制位分组颠倒。初始时 n 分成 32 组,每组有 1 位。当 n 的分组个数大于 1 时,每次将 n 的相邻两组互换,互换之后这两组合并为一个组,直到 n 的分组个数等于 1 时结束。分组情况具体变化如下。

1 16 组,每组有 2 位。

2 8 组,每组有 4 位。

4 组,每组有 8 位。

2 组,每组有 16 位。

1 组,每组有 32 位。

上代码:

//1
public class Solution
{
    public uint reverseBits(uint n)
    {
        const int BITS = 32;
        uint reversed = 0;
        for (int i = 0, j = BITS - 1; i < BITS; i++, j--)
        {
            uint bit = (n >> i) & 1;
            reversed |= bit << j;
        }
        return reversed;
    }
}

//2
public class Solution
{
    public uint reverseBits(uint n)
    {
        n = (n & 0x55555555) << 1 | (n >> 1) & 0x55555555;
        n = (n & 0x33333333) << 2 | (n >> 2) & 0x33333333;
        n = (n & 0x0f0f0f0f) << 4 | (n >> 4) & 0x0f0f0f0f;
        n = (n << 24) | ((n & 0xff00) << 8) | ((n >> 8) & 0xff00) | (n >> 24);
        return n;
    }
}

个人感悟:这题没太懂,参考给出的结果,有需要的话可以强行背诵。

以上是碰到的第一百九十题,后续持续更新。感觉对你有帮助的小伙伴可以帮忙点个赞噢!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/743185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微软MFC技术中的消息循环

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来聊聊微软MFC技术中的消息循环。 在很多windows程序中&#xff0c;都有如下代码&#xff1a; //Win32应用程序入口函数WinMain() int WINAPI WinMain(HINSTANCE hInstance, //指向当前实例的句柄…

全链路Python环境迁移

全链路Python环境迁移 在当前的Python环境中&#xff0c;安装一些库以后&#xff0c;如果换了一套Python环境&#xff0c;难道再来一次不停的pip install&#xff1f;当然不是。 第一步&#xff0c;使用pip freeze&#xff08;冻结&#xff09;备份当前Python库的环境 pip f…

《微服务架构设计模式》第六章 使用事件溯源开发业务逻辑

内容总结自《微服务架构设计模式》 使用事件溯源开发业务逻辑 一、传统持久化技术的问题二、什么是事件溯源三、好处和弊端四、实现事件存储库五、与Saga结合六、总结 一、传统持久化技术的问题 1、对象与关系的"阻抗失调" 所谓的对象与关系的“阻抗失调”是一个古…

ThreadLocal与InheritableThreadLocal及线程池的影响

在web开发中使用了ThreadLocal本地线程存储拦截器解析的用户信息&#xff0c;方便在下文代码中调用&#xff0c;但是在springboot中使用Async开启异步操作时&#xff0c;就会造成&#xff0c;子线程无法拿到父本地线程数据。拿到一些脏数据。 1.InheritableThreadLocal 在这个…

常用技巧总结

本文总结了本人在日常工作学习中遇到的问题及其解决方法&#xff0c;没有固定的涉及领域 目的就是为了在下一次遇到类似问题的时候方便查找&#xff0c;从而快速解决问题 本文不定时更新~ 目录 Windows使用 如何实现桌面图标随意排列 文件资源管理器相关 显示隐藏文件 修改…

深度学习06-深度卷积生成对抗网络(DCGAN)

文章目录 概述原理简介专业术语零填充转置卷积 生成动漫图像算力选择数据集目录规划源代码数据源加载定义配置类定义模型 训练可视化绘制损失绘制生成器图像变化 其他项目CycleGANstargan 概述 GAN&#xff08;Generative Adversarial Network&#xff09;是一种生成模型&…

flutter开发实战-日志logger写入文件及print

flutter开发实战-日志logger写入文件及print 在开发中&#xff0c;需要日志logger写入文件&#xff0c;方便日后查看出现的问题。这里记录之前的实现方案。 使用的日志插件是logger 一、引入日志插件 在工程中pubspec.yaml引入logger logger: ^1.4.0二、代码实现 使用比较…

听GPT 讲K8s源代码--pkg(一)

在 Kubernetes 代码仓库中&#xff0c;pkg/api和pkg/apis目录都包含用于定义 Kubernetes API 对象的代码&#xff0c;但它们的作用略有不同。 pkg/api目录包含 Kubernetes 的旧版本 API 对象定义&#xff0c;这些定义在 Kubernetes 1.7 版本之前使用。这些对象定义已经过时&…

第四课:Figma 图标设计

图形绘制小技巧 绘制正圆 O shift 正方体 R shift&#xff0c;右侧属性面板可调整描边显示方向&#xff0c;描边类型&#xff1b; 直线 L shift 带角度的箭头 shift L &#xff0c;按住 shift 键调整以 45 度角调整箭头方向&#xff0c;右侧属性面板可调节箭头方向和线条…

文献里的分子对接方法2

珍珠贝肉水解物中的新型抗氧化肽以及它们的抗氧化活性机制。 关于摘要&#xff1a; 自由基和衰老以及很多疾病都有关联。 抗氧化肽具有良好的抗氧化活性和吸收性&#xff0c;是抗氧化剂研究的热点之一。 这篇文献的研究中&#xff0c;纯化珍珠贝肉水解液、经过蛋白质组学鉴定…

大模型与端到端会成为城市自动驾驶新范式吗?

摘要&#xff1a; 最近可以明显看到或者感受到第一梯队的城市自动驾驶量产已经进入快车道&#xff0c;他们背后所依靠的正是当下最热的大模型和端到端的技术。 近期&#xff0c;城市自动驾驶量产在产品和技术上都出现了新的变化。 在产品层面&#xff0c;出现了记性行车或者称…

【python】逻辑中断(and or)

今天学习javascript的时候竟然有一个额外收获&#xff1a;逻辑中断。而且我实验了一下&#xff0c;逻辑中断同样适用于python。 0 and 2返回&#xff1a; 0 1 and 2返回&#xff1a; 2 0 and 2返回的是0&#xff0c;而1 and 2返回的是2。就是因为在0那里出现了逻辑中断。 解…

Git的使用以及在IDEA2022中使用Git

目录 前言 一、Git下载与安装 二、Git常用命令 1.全局设置 2.获取Git仓库-在本地初始化Git仓库 3.获取Git 仓库-从远程仓库克隆 4.Git工作区、暂存区、版本库 概念以及工作区中文件状态 &#xff08;1&#xff09;工作区、暂存区、版本库 &#xff08;2&#xff09; G…

centos7.9 rc.local启动失败

最近在虚拟机上整个centos7.9&#xff0c;想要把程序设置成开机自启动&#xff0c;发现rc.local状态是failed&#xff0c;重启服务器也没用。 自己之前写过两篇相关的博客 centos7重启后/etc/rc.local中的脚本没有执行_lanren312的博客-CSDN博客 centos7开机运行java的sh脚本…

Sui 8192:如何使用Sui对象撼动游戏领域

Ethos通过其Sui 8192游戏不仅展示了对象在Sui上的力量&#xff0c;还展示了基于对象的游戏如何有力地撼动游戏行业。每个玩家在移动游戏中的方块时都会铸造一个新的对象&#xff0c;类似于铸造NFT&#xff0c;这为每个独立玩过的游戏提供了永久上链的机会。 Sui 8192游戏的规则…

10.4.4 终端机的环境设置: stty, set

在 tty1 ~ tty6 这六个命令行的终端机&#xff08;terminal&#xff09; 环境中登陆&#xff0c;登陆的时候我们可以取得一些字符设置的功能。举例来说&#xff0c;我们可以利用倒退键 &#xff08;backspace&#xff0c;就是那个←符号的按键&#xff09; 来删除命令列上的字符…

强化学习模型

目录 引言 1 强化学习的理论基础 2 强化学习的实践 3实战案例:自动驾驶

【InnoDB 存储引擎】InnoDB 数据页格式(详细版,数据页格式对于理解索引详细的原理很重要)

文章目录 1 InnoDB 数据页结构1.1 File Header2.2 Page Header2.3 Infimum 和 Supremum Record2.4 User Record 和 Free Space2.5 Page Directory&#xff08;InnoDB 数据页结构最重要的部分&#xff09;2.6 File Trailer 2 参考资料 1 InnoDB 数据页结构 我们已经知道页是 In…

PS 2023 24.7 Beta Ai 如何解决橙色错误弹窗问题?

距离Adobe软件公司首次将图像编辑及数字绘画软件Photoshop推出到大众面前已经过去35年&#xff0c;最近该公司又再次书写了属于Photoshop的历史新篇章。 Adobe 发布的 Photoshop&#xff08;Beta&#xff09;新增「创意填充&#xff08;Generative Fill&#xff09;」功能&…

jmter连接mysql数据库取值

测试情况下需要大量的测试数据进行模拟测试&#xff0c;如何使用接口插入大量数据&#xff0c;使用jmter进行插入 步骤如下&#xff1a; 第一步&#xff1a;\lib\ext导入mysql-connector-java-5.1.44-bin.jar驱动 F:\TOOLS\apache-jmeter-5.4.1\apache-jmeter-5.4.1\lib\ext …