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

二进制中1的个数-剑指Offer-java位运算

一、题目描述

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。

提示:

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

在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

示例 1:

输入:n = 11 (控制台输入 00000000000000000000000000001011)

输出:3

解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

示例 2:

输入:n = 128 (控制台输入 00000000000000000000000010000000)

输出:1

解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

示例 3:

输入:n = 4294967293 (控制台输入 11111111111111111111111111111101,部分语言中 n = -3)

输出:31

解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

提示:

输入必须是长度为 32 的 二进制串 。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、运行结果

三、解题思路

需要注意的是,java没有无符号整数这种数据类型,所以输入的可能是负数,因此,如果直接用对2求余,每次除以2这种方式,对负数求出的结果是错的。

这里采用位运算的方式,正负数的存储是统一的,都是采用补码进行存储,所以可以每次将n和1所位与运算,得到最低位的值(0或1),然后将n右移一位(去掉最低位),循环判断32次即可。

四、AC代码

public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int ans = 0;for(int i=0; i<32; i++){if((n & 1) == 1){  //和1做与运算得到最低位的值ans++;}n = n >> 1;  //右移移位,相当于除以2}return ans;}
}
http://www.lryc.cn/news/10431.html

相关文章:

  • 学自动化测试可以用这几个练手项目
  • 2023年保健饮品行业分析:市场规模不断攀升,年度销额增长近140%
  • 2023-02-17 学习记录--TS-邂逅TS(一)
  • SpringMVC创建异步回调请求的4种方式
  • MySQL(二)表的操作
  • SpringCloud - 入门
  • 进一步了解C++函数的各种参数以及重载,了解C++部分的内存模型,C++独特的引用方式,巧妙替换指针,初步了解类与对象。满满的知识,希望大家能多多支持
  • Chapter6:机器人SLAM与自主导航
  • Sass的使用要点
  • 计算机启动过程,从按下电源按钮到登录界面的详细步骤
  • LeetCode 刷题之 BFS 广度优先搜索【Python实现】
  • Hadoop01【尚硅谷】
  • Echarts 配置横轴竖轴指示线,更换颜色、线型和大小
  • OpenAI 官方API Java版SDK,两行代码即可调用。包含GhatGPT问答接口。
  • SpringBoot 日志文件
  • SQL71 检索供应商名称
  • 02:入门篇 - 漫谈 CTK
  • SpringBoot常用注解
  • RBAC权限模型
  • 【郭东白架构课 模块一:生存法则】07|法则三:架构师如何找到自己的商业模式?
  • STM32 - 看门狗
  • Redis集群搭建
  • 车载基础软件——AUTOSAR AP典型应用案例
  • 消息中间件----内存数据库 Redis7(第3章 Redis 命令)
  • react-03-react-router-dom-路由
  • 2自由度悬架LQR控制
  • C语言返回类型为指针的一些经典题目(下)
  • OpenAI 官方api 阅读笔记
  • 微服务项目【分布式锁】
  • JavaWeb5-线程常用属性