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

leetcode刷题日记:190. Reverse Bits(颠倒二进制位)和191. Number of 1 Bits( 位1的个数)

190. Reverse Bits(颠倒二进制位)

题目要求我们将一个数的二进制位进行颠倒,画出图示如下(以8位二进制为例):
在这里插入图片描述
显然对于这种问题我们需要用到位操作,我们需要将原数的每一位取出来然后颠倒之后放进另一个数。
我们需要先知道离散数学中的几个公式 p ∨ 1 = 1 p ∨ 0 = p p ∧ 1 = p p ∧ 0 = 0 p\lor 1 = 1\\p\lor 0=p\\p\land 1 = p\\p\land 0 = 0 p1=1p0=pp1=pp0=0
知道上述的公式之后我们就可以对数进行取出位数。
如下图所示
在这里插入图片描述
在这里插入图片描述

也就是说我们要取出哪一位就让哪一位&上1就行了。
但是如何控制对应位为1而其他位为0呢?我们知道c语言中移位操作>>与<<,分别代表左移与右移,让对应位为1我们只需要让1进行<<操作就行。
经过移位与&操作我们可以得到一个除了要取出位为原二进制数中对应位之外,其余位全为0的数。
现在取出哪一位的问题已经解决了,我们知道 p ∨ 0 = = p p\lor0==p p0==p也就是说我们要保证接收对应位的数的对应位等于0,其余的均不许要进行改变,因为我们取出数的位除了取出的那一位其余位全为0,并不会改变我们的接收数。由此我们有了以下的思路。
因为有符号整型的数在进行移位操作的时候并不能操作符号位所以我们需要先进行符号位的改变。或者使用无符号整型。

uint32_t reverseBits(uint32_t n) {int x = 0;if(n%2==0){x = 0;}else{x = INT_MIN;}for(int i =0; i<31; i++){n = n>>1;x |= ((n&1)<<(30-i));}return x;
}

运行结果截图:
在这里插入图片描述

191. Number of 1 Bits( 位1的个数)

经过上面这一题之后我们已经知道怎么取出对应位了,取出对应位之后判断是否为1就行了。

int hammingWeight(uint32_t n) {int count = 0;while(n){if(n&1){count++;  }n=n>>1;}return count;
}

运行结果截图:
在这里插入图片描述

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

相关文章:

  • Node.js之fs文件系统模块
  • 「Verilog学习笔记」使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
  • C/C++---------------LeetCode第LCR. 024.反转链表
  • 最长回文子序列 递归与动态规划
  • 学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程
  • 67基于matlab图像处理,包括颜色和亮度调整、翻转功能、空间滤波和去噪、频域滤波和去噪、噪声添加,形态学操作、边缘检测及示波器集成的GUI图像处理。
  • 【精选】项目管理工具——Maven详解
  • DVWA - 4
  • gRPC之grpc resolver
  • NI Package Manager创建程序包
  • C语言实现排序介绍
  • 64位ATT汇编语言使用bss段.skip指令储存字符,并使用系统调用输出字符
  • 贝锐蒲公英路由器X4C如何远程访问NAS?
  • Golang Context 的使用指南
  • vue3使用西瓜播放器播放flv、hls、mp4视频
  • 【Promise12数据集】Promise12数据集介绍和预处理
  • Qt设置整体背景颜色
  • Stream流常见操作
  • INFINI Labs 产品更新 | 发布 Easysearch Java 客户端,Console 支持 SQL 查询等功能
  • 前端调试只会console.log()?
  • CentOS Linux release 7.9.2009 (Core)中安装配置Tomcat
  • 移动机器人路径规划(四)--- 考虑机器人模型下的运动规划KINODYNAMIC PATHFINDING
  • 服务器数据恢复—VMware虚拟化下误操作导致服务器崩溃的数据恢复案例
  • 微服务实战系列之Gateway
  • GZ038 物联网应用开发赛题第10套
  • 重生之我是一名程序员 35
  • 计算机毕业设计选题推荐-点餐微信小程序/安卓APP-项目实战
  • 分享禁止Win10更新的两种方法
  • SPASS-回归分析
  • 【使用vscode在线web搭建开发环境--code-server搭建】