博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 15. 二进制中1的个数
阅读量:3952 次
发布时间:2019-05-24

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

文章目录

题目

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

在这里插入图片描述

思路:x &= (x-1)

class Solution {
public: int fun (uint32_t x) {
int count = 0; while (x) {
++count; x &= (x-1); } return count; } int hammingWeight(uint32_t n) {
return fun(n); }};

分析:

判断对应的二进制数中有多少个‘1’,通过与运算,原数和原数-1做与运算,改变的是最右边的‘1’,以及‘1’右边的情况。每次运算完毕之后,当前‘1’右边的全为1,当前‘1’左边的全相同(相同的数做与运算不影响),每次运算完毕检查当前的值是否为零。

运行结果:

在这里插入图片描述

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

你可能感兴趣的文章
解决报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”
查看>>
linux学习之tr操作符用法
查看>>
shell的dirname $0和readlink用法
查看>>
设计模式——设计模式三大分类以及六大原则
查看>>
Android开发——ListView局部刷新的实现
查看>>
Android开发——ListView的复用机制源码解析
查看>>
Android开发——架构组件LiveData源码解析
查看>>
IDEA常用快捷键整理
查看>>
【Vue】两个元素同一行显示
查看>>
XXL-Job使用
查看>>
如何在SwaggerAPI中添加统一授权认证
查看>>
多线程
查看>>
【Linux】Centos7 常用命令
查看>>
【Redis】Centos7下安装Redis
查看>>
【Redis】Centos7下搭建Redis集群
查看>>
【Redis】Centos7下搭建Redis集群——哨兵模式
查看>>
【Linux】本地ping不同VM虚拟机
查看>>
【SpringCloud】Hystrix
查看>>
乐观锁、悲观锁、公平锁、可重入锁
查看>>
快速阅读——《认知篇》
查看>>