博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制中1的个数
阅读量:6689 次
发布时间:2019-06-25

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

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
 
对于这道题我们很容易想到的是先判断二进制数最右边的第一位是不是1,。接着把输入的整数右移一位,这样每次移动一位,直到整个整数变为0。
但是需要注意的是,如果输入一个负数,例如:0x80000000。把负数0x80000000右移一位的时候,不是简单的把最高位1移到第二位变成0x40000000,而是0xC0000000.如果一直做右移运算,最终这个数字会变成0xFFFFFFF而陷入死循环。所以,采用左移的方式。
#include 
#include
#include "string.h"#include "stdio.h"#include
#include
#include
#include
#include
#include "math.h"using namespace std;class Solution {public: int NumberOf1(int n) { int count = 0; unsigned int flag = 1; while(flag) { if(flag&n) count++; flag = flag<<1;//每次像左移动一位,测试第二位...一直到最高位是否为1 } return count; }};int main(){ int n = 5; Solution solution; int count = solution.NumberOf1(n); cout<
<

 

转载于:https://www.cnblogs.com/omelet/p/6652221.html

你可能感兴趣的文章
Linux内核抢占与中断返回【转】
查看>>
Linux 文件操作监控inotify功能及实现原理【转】
查看>>
linux arm的存储分布那些事之一
查看>>
Spring下redis的配置
查看>>
vs2010在进行数据架构比较时报'text lines should not be null'错误
查看>>
jeecg入门操作—表单界面
查看>>
网页音乐制作器(网页钢琴)-- MusicMaker
查看>>
oracle优化:避免全表扫描(高水位线)
查看>>
对超级课程表产品的一些个人小看法
查看>>
词频统计 效能分析
查看>>
Linux终极shell-zsh的完美配置方案!——oh-my-zsh
查看>>
MYSQL 函数、自定义函数 function
查看>>
Python爬虫之简单爬虫框架实现
查看>>
python isinstance内建函数的使用
查看>>
老师不能把你怎样,但外面的世界可以!
查看>>
css居中div的几种常用方法
查看>>
css3
查看>>
根据某个元素做相对定位
查看>>
C# Window编程随记——ClickOnce程序部署
查看>>
小白系列-免费广告路由器web认证设置(2)
查看>>