博客
关于我
leetcode题解191-位1的个数
阅读量:790 次
发布时间:2023-01-31

本文共 693 字,大约阅读时间需要 2 分钟。

编写一个函数来计算无符号整数的二进制表达式中的‘1’的个数(汉明重量)

要实现一个Java函数,该函数接收一个整数,将其转换为二进制表示并统计其中‘1’的个数。这个问题可以通过两种方式解决:位移和取反运算符,或者使用循环和掩码。

方法分析

选项1:位移和取反运算符这种方法针对正数和负数分别处理。对于正数,每次右移检查最后一位是否为1,并右移;对于负数,先将数转换为正数,然后重复同样的步骤,最后计算结果为32减去总数。

选项2:循环和掩码这种方法直接遍历32位,使用掩码检查每个位是否为1,不需要显式处理正负数。

方法实现

方法代码

public int hammingWeight(int n) {    int x = n;    int count = 0;    int mask = 1;    for (int i = 0; i < 32; i++) {        if ((mask & x) != 0) {            count++;        }        mask <<= 1;    }    return count;}

方法描述

  • 初始化变量:将输入整数n赋值给变量x,初始化计数器count为0,以及掩码mask为1。
  • 循环每一位:使用循环遍历每一位(共32次),检查当前掩码与x的按位与结果是否为非零。如果结果非零,说明当前位为1,计数器加一。
  • 左移掩码:每次循环将掩码左移一位,检查下一位。
  • 返回结果:循环结束后,返回计数器的值,即为汉明重量。
  • 该方法适用于所有整数,无论是正数还是负数,均能正确统计其二进制表示中的‘1’的个数。

    转载地址:http://qhgyk.baihongyu.com/

    你可能感兴趣的文章
    Java基础:变量(声明、赋值、引用)、基本数据类型、作用域
    查看>>
    Java基础:如何编写并执行入门级别程序 Hello World
    查看>>
    kubernetes 部署SonarQube 7.1 关联LDAP
    查看>>
    Java基础:按位运算符
    查看>>
    Kubernetes 配置管理实战
    查看>>
    Java基础:数字类概念、常用方法、常量
    查看>>
    Kubernetes 针对资源紧缺处理方式的配置
    查看>>
    Java基础:数组创建、初始化、引用、分类
    查看>>
    Java基础:数组的长度、数组的复制
    查看>>
    Java基础:条件运算符
    查看>>
    Java基础:比较运算符
    查看>>
    Kubernetes 集群卸载清理
    查看>>
    Java基础:运算符优先级
    查看>>
    Kubernetes 高级调度详解
    查看>>
    java备品备件仓库管理系统(源码+开题报告)
    查看>>
    Java复用技术在不同行业项目中的适应性分析与扩展
    查看>>
    kubernetes1.5.2--部署node-problem-detector服务
    查看>>
    kubernetes1.5.2--部署监控服务
    查看>>
    kubernetes1.5.2集群部署过程--安全模式
    查看>>
    kubernetes1.5.2集群部署过程--非安全模式
    查看>>