`
445822357
  • 浏览: 738884 次
文章分类
社区版块
存档分类
最新评论

输入1个数输出其二进制表示中1的个数

 
阅读更多

面试题。题目描述就是写一个函数,要求输入一个数,输出其二进制表示中1的个数。此处假设输入的为int型。

方法一:首先想到的就是位运算,用移位得出每一位是否为1。代码如下所示。

#include <iostream>

using namespace std;

int numberof1(int in)
{
	int count = 0;
	int input = in;
	for(int i = 0; i < 32; i++)
	{
		if(1 == (input & 1))
			count++;
		input >>= 1;
	}
	return count;
}

int main()
{
	int numbertocount;
	cin>>numbertocount;
	cout<<numberof1(numbertocount)<<endl;
	return 0;
}


方法二:其次想到的是直接像数组一样取每一位的值,如此只要把所有的位相加起来,得出的值即为所求,其它代码不变,numberof1函数代码如下所示。

int numberof1(int in)
{
	int count = 0;
	char input[32];
	itoa(in, input, 2);
	for(int i = 0; i < strlen(input); i++)
	{
		count += input[i] - '0';
	}
	return count;
}


方法三:不直接取每一位的值,采用除以2取余数,余数相加即为所求,其它代码不变,numberof1函数代码如下所示。

int numberof1(int in)
{
	int count = 0;
	int input = in;
	for(int i = 0; i < 32; i++)
	{
		count += input % 2;
		input /= 2;
	}
	return count;
}


方法四:采用位运算变相得出1的个数,其它代码不变,numberof1函数代码如下所示。

int numberof1(int in)
{
	int count = 0;
	int input = in;
	while(input)
	{
		count++;
		input &= input - 1;
	}
	return count;
}


方法五:不使用循环,采用空间换取时间的策略,如32位机中int为32位,定义2的32次方大小的int型数组,其中每个元素存对应序号的二进制表示中1的个数。如此求输入值的二进制表示中1的个数就可以转化成查表的方式来进行,查表的优化可以采用索引。

分享到:
评论

相关推荐

    十进制转二进制中1的个数.txt

    d行对应每个测试数据,把转换成的2进制数中哪一位是1的位数输出,按升序排列。 (比如说1101,它的第3位是1,第2位是1,第1位是0,第0位是1,所以输出 0 2 3) 输入样例: 1 13 输出样例: 0 2 3

    二进制中1的个数1

    二进制中 1 的个数请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。示例 1:输入:000000000000000000000000000010

    汇编统计1的个数(二进制)

    汇编实现统计输入数据中1的个数,转换为二进制判断

    C语言二进制位不同的个数的具体实现程序

    对于两个非负整数x 和y,函数f(x,y) 定义为x 和y 在二进制表示时,其对应位不同的个数。例如,f(2,3)=1, f(0,3)=2, f(5,10)=4。 现在给出一组非负整数x 和y,计算f(x,y)的值。 Input 第一行:一个整数T (0 ),...

    BURmoon#CPP_notes#[位运算]二进制中1的个数1

    题目输入一个整数,输出该数32位二进制表示中1的个数(其中负数用补码表示)示例输入输出题解二进制移位法//将 mark0x01 和 n 进行 ‘&’ 运算//

    sichallez#CyC2018-CS-Notes#15. 二进制中 1 的个数1

    15. 二进制中 1 的个数题目链接牛客网题目描述输入一个整数,输出该数二进制表示中 1 的个数。解题思路n&(n-1) 位运算可以将 n 的位级表示中最低的那

    剑指offer面试题15. 二进制中1的个数(位运算)

    请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 思路 详见链接 代码 class Solution: def hammingWeight(self...

    php实现统计二进制中1的个数算法示例

    输入一个十进制整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解决思路 这是个位运算的题目。 解法一:可以通过按位与操作,通过将每一位和1与操作来求出1的个数。 解法二(最优解):一个巧妙的方法,...

    汇编语言 20个练习题目 代码加实验报告

    5.8 把AX中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写一个程序,要求数一下值为3(即11B)的四分之一字节数,并将该数在终端上显示出来。 5.9 试编写一汇编语言程序,要求从键盘接收一个四位的...

    Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)

    (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 10 输出: 4 解释: 6 -&gt; 110 (2 个计算置位,2 是质数) 7 -&gt; 111 (3 个计算...

    PYTHON笔记 — 位操作

    &gt; 输入一个整数,输出该数二进制表示中1的个数 对二进制的左移与右移,即对原数进行乘二除二操作,输出十进制 0b110 &lt;&gt; 1 # 6 -- 3 print(bin(3)) # 'ob11' 对十进制先转换为二进制进行左移与右移,即对原数进行...

    连通问题 解题报告 ——2011软件大赛决赛 C组 本科第5题 原创By BossDong

    从图像数据开始处,每个像素用1个二进制位表示。 从图片的底行开始,一行一行向上存储。 Windows规定图像文件中一个扫描行所占的字节数必须是4字节的倍数, 不足的位均以 0 填充。例如,图片宽度为45像素,实际上每...

    python 光棍的悲伤

    # 让我们勇敢地面对光棍的身份吧,现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。 # 输入示例 # 输入:a = 7 # 输出示例 # 输出:3 # 解析 # 7的二进制是111,所以输出答案是3。这道题考的...

    c程序设计习题参考(谭浩强三版)习题参考解答

    3.3请将下面各数用八进制和十六进制数表示: 2 3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。 2 3.5字符常量和字符串常量有什么区别? 3 3.6写出以下程序运行的结果: 3 3.7...

    算法面试题

    :请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。:给定单向链表的头指针和一个结点指针,定 义一个函数在O(1)时间删除该结点。:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表

    上海电机学院C语言实训答案

    说明:输入的第1个数表示学生人数(n=9),接着输入的9个成绩中,累加和为628.5(所有小数均保留一位小数输出),平均分为69.8分;平均分以上(A档)有4人,占44.4%,平均分以下(B档)有5人,占55.6%;A档的最低...

    汇编实验报告.doc

    要求实现左右SHIFT任何一个键处于按下状态时输入字符为键 盘的上档字符或大写字母,否则输出数字或小写字母。 三、 进度计划 "序号 "设计内容 "完成时间 "备注 " "1 "比较字符串sample(学习) "2010.12.27 " " " ...

    algoboy101#note_blog_leetcode#[0603] 连续空余座位1

    title: "[0603] 连续空余座位"题目描述几个朋友来到电影院的售票处,准备预约连续空余座位。注意:seat_id 字段是一个自增的整数,free 字段

    javascript入门笔记

    特点 :将 a 和 b 转换为 二进制,按位比较,对应位置的数字,至少有一位为1的话,那么该为的整体结果就为1,否则为 0 ex : 5 | 3 101 011 ======== 111 结果为 :7 适用场合:任何小数与0 做 按位或的操作...

    计算机应用基础数制与编码PPT课件.pptx

    用十个数码表示——0、1、2、3、4、5、6、7、8、9 遵循"逢十进一"的规则 权展开式: D=Dn-1 · 10n-1+ Dn-2 · 10n-2+ · · ·+ D0 · 100+ D-1 · 10-1 + · · ·+ D-m · 10-m 十进制数是人们最习惯使用的数值,...

Global site tag (gtag.js) - Google Analytics