首页 > 试题广场 >

二进制数1

[编程题]二进制数1
  • 热度指数:7946 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}给定一个非负整数 x,请计算 x 的二进制表示中数字 \texttt{1} 的数量。

\hspace{15pt}【名词解释】
\hspace{23pt}\bullet\, 二进制表示二进制表示 指将整数用基数 2 的形式书写,不含前导零;
\hspace{23pt}\bullet\, 位计数位计数 是指统计一个整数二进制表示中 \texttt{1} 的数量,也称为 \operatorname{popcount}

输入描述:
\hspace{15pt}在一行上输入一个整数 x\left(-2^{63} < x < 2^{63}\right),表示待统计的数值。


输出描述:
\hspace{15pt}在一行上输出一个整数,表示 x 的二进制表示中 \texttt{1} 的数量。
示例1

输入

3

输出

2

说明

3 的二进制表示为 \left(11\right)_2,其中包含两个 \texttt{1}
示例2

输入

65

输出

2

说明

65 的二进制表示为 \left(1000001\right)_2,其中包含两个 \texttt{1}
头像 bandiaoz
发表于 2024-12-26 19:10:14
解题思路 这是一道位运算题目,主要思路如下: 问题分析: 输入一个long类型的数值 需要计算其二进制表示中1的个数 需要处理负数的情况 解决方案: 方法一:循环右移,统计最低位1 方法二:n & (n-1)消除最低位1 方法三:查表法统计每8位中1的个数 方法四:内置函数(如 展开全文