剑指OFFER之二进制中1的个数(九度OJ1513)
2014-05-22 18:10
323 查看
题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:
输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
输出:
对应每个测试案例,输出一个整数,代表输入的那个数中1的个数。
样例输入:
3 4 5 -1
样例输出:
1 2 32
解题思路:
首先对一个数判断1的个数,可以考虑直接遍历每一位就行了,那么实现起来,可以只看最后一位(与1进行与操作),再进行右移1位。或者只看最高位操作方法类似。代码:
#include <stdio.h> int getNumber(int test); int main(){ int n,i,test; while(scanf("%d",&n)!=EOF && n > 0){ for(i=0 ; i<n ; i++){ scanf("%d",&test); printf("%d\n",getNumber(test)); } } return 0; } int getNumber(int test){ int sum = 0,i; for(i=0;i<32;i++){ sum+= (test&1); test = test>>1; } return sum; } /************************************************************** Problem: 1513 User: xhalo Language: C Result: Accepted Time:80 ms Memory:912 kb
相关文章推荐
- 【剑指Offer面试编程题】题目1513:二进制中1的个数--九度OJ
- 【剑指Offer面试编程题】题目1513:二进制中1的个数--九度OJ
- 【剑指Offer面试题】 九度OJ1513:二进制中1的个数
- 剑指offer之二进制中1的个数
- python刷题日记:剑指offer-二进制中1的个数
- 剑指OFFER之用两个栈实现队列(九度OJ1512)
- 剑指OFFER之跳台阶(九度OJ1388)
- 剑指OFFER之反转链表(九度OJ1518)
- 九度OJ剑指offer中关于顺时针输出矩阵的问题分析
- 剑指offer:二进制中1的个数(java)
- 剑指Offer:二进制中1的个数
- [牛客网,剑指offer,python] 二进制中1的个数
- 剑指Offer_面试题10_二进制中1的个数
- 【剑指Offer面试编程题】题目1389:变态跳台阶--九度OJ
- 【剑指Offer面试编程题】题目1515:打印1到最大的N位数--九度OJ
- 【剑指Offer面试编程题】题目1504:把数组排成最小的数--九度OJ
- 【剑指Offer面试编程题】题目1348:数组中的逆序对--九度OJ
- 【剑指Offer面试编程题】题目1362:左旋转字符串--九度OJ
- 【剑指Offer面试编程题】题目1356:孩子们的游戏(圆圈中最后剩下的数)--九度OJ
- 剑指offer_二进制1的个数