面试题10:二进制中1的个数
来源:互联网 发布:淘宝联盟返利时间 编辑:程序博客网 时间:2024/06/10 03:28
- 题目描述:Online Judge
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
- 输出:
对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。
- 样例输入:
345-1
- 样例输出:
1232
解题思路:
先判断整数二进制表示中最右边是不是1,接着把输入的整数右移以为,直到整个整数变为0为止。
java代码:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.StreamTokenizer;public class Problem_10 {public static void main(String[] args) throws IOException {BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer str = new StreamTokenizer(bu);//while(str.nextToken() != StreamTokenizer.TT_EOL){str.nextToken();int n =(int) str.nval;int[] input = new int[n];for(int i = 0; i < n; i ++){str.nextToken();input[i] = (int) str.nval;}//end forfor(int i = 0; i < n; i++){int count = 0;int temp = input[i];while(temp != 0){count++;temp = temp&(temp -1);}//end whileSystem.out.println(count);}//}//end while}}C++代码:
#include <iostream>#include <stdio.h> using namespace std; int main() { int T; cin >> T; int num; while(T--) { scanf("%d", &num); int count = 0; while(num != 0) { ++count; num &= (num - 1); } printf("%d\n", count); } return 0;}
#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;}
正数(包括边界值1、0x7FFFFFFF)
负数(包括边界值0x80000000、0xFFFFFFFF)
0。
体会:
题目中要注意移位时候的符号问题,负数的时候移位需要特别注意。
此题主要考察二进制的位运算。
0 0
- 面试题---二进制中1的个数
- 面试题10:二进制中1的个数
- 面试题10:二进制中1的个数
- [剑指offer][面试题10]二进制中1的个数
- 《剑指offer》面试题10二进制中1的个数
- 【剑指offer】面试题10:二进制中1的个数
- 【剑指offer】面试题10:二进制中1的个数
- 剑指offer 面试题10 二进制中1的个数
- 剑指Offer:面试题10 二进制中1的个数
- 面试题10 二进制中1的个数
- 面试题10:二进制中1的个数
- 面试题10-二进制中1的个数
- 面试题10:二进制中1的个数
- 面试题10二进制中1的个数
- 《剑指Offer》面试题10:二进制中1的个数
- 剑指offer-面试题10-二进制中1的个数
- 面试题10 二进制中1的个数
- 面试题10:求二进制中1的个数
- 用两个队列实现一个栈
- 黑马程序员——Java集合框架—Queue—BlockingQueue—DelayQueue
- Drupal 7 模块开发 创建自定义表(table) (hook_schema)
- android应用跳转至市场给软件评分功能
- 一点想法
- 面试题10:二进制中1的个数
- 【网络爬虫】【java】微博爬虫(五):防止爬虫被墙的几个技巧(总结篇)
- 黑马程序员——Java集合框架—Queue—BlockingQueue—SynchronousQueue
- php中&&、and 区别
- 选择排序(C语言版)
- 软件测试的起点和源泉——七种测试驱动模式(方法论)
- Servlet生命周期与工作原理
- cocos2dx 2.x到cocos2dx 3.x的一些改变
- /etc/resolv.conf中关键字search和domain的作用