文档章节

【九度OJ1513】|【剑指offer10】二进制中1的个数

aqia358
 aqia358
发布于 2013/10/18 10:06
字数 304
阅读 42
收藏 0
题目描述:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

输入:

输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。

输出:

对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。

知识点:

  • 正数的补码为它本身
  • 负数的补码求法
    1. 补码 = 反码+1(比如:-1 补码:1111 1111 = 1111 1110 + 1);
    2. 补码 = 模-负数的绝对值(比如:-1 补码:1111 1111(10000 0000 -1得来));
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

/**
 * 二进制中1的个数 
 * @author aqia358
 *
 */
public class Main {

	public static void count(int t) {
		if (t >> 31 == 0) {
			System.out.println(num(t));
		}else{
			long a = 1;
			int b = (int)(a << 32) + t;
			System.out.println(num(b));
		}
	}

	public static int num(int t) {
		int count = 0;
		int n = 0;
		while (n < 32) {
			n++;
			if ((t & 1) != 0) {
				count++;
			}
			t >>= 1;
		}
		return count;
	}

	public static void main(String[] args) throws IOException {
		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
		while(st.nextToken() != st.TT_EOF){
			int n = (int) st.nval;
			while(n > 0){
				n -- ;
				st.nextToken();
				count((int) st.nval);
			}
		}
	}
}



© 著作权归作者所有

共有 人打赏支持
aqia358
粉丝 6
博文 82
码字总数 30297
作品 0
海淀
程序员
剑指Offer学习总结-二进制中1的个数

剑指Offer学习总结-二进制中1的个数 本系列为剑指Offer学习总结,主要是代码案例的分析和实现: 书籍链接:http://product.dangdang.com/24242724.html 原作者博客:http://zhedahht.blog.16...

wwlcsdn000
01/17
0
0
剑指Offer——知识点储备-常用算法

剑指Offer——知识点储备-常用算法 快速排序 注:若排序是有序的,采用快排,则退化为冒泡排序。 解决这个问题,采用两个选取基准的方法 (1)随机选取基数(在这个区间内随机取一个数) 出现...

sunhuaqiang1
2016/11/07
0
0
[算法总结] 20 道题搞定 BAT 面试——二叉树

本文首发于我的个人博客:尾尾部落 0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没...

繁著
09/04
0
0
剑指Offer算法题

反转二叉树(就是二叉树的镜像) public class Mirror { public void mirrorTree(TreeNode root) { if (null == root) {// 空结点 return; } if (root.left == null && root.right == null)......

gaomq
03/02
0
0
剑指offer 11二进制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 java版本: public class Solution { } js版本:思路是当输入的值不是0的时候,至少有一位是1。先count++,然后解释一下n...

无敌小阿没
08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql在查询结果前加序号

在查询结果前加序号: set @rn=0; select @rn:=@rn+1 as 序号,你查询的结果集

lyle_luo
20分钟前
1
0
webpack 工作原理

暂无内容

agenyun
28分钟前
1
0
iOS返回指定控制器或者关闭自己当前控制器

RT。。。 这种情况其实很常见,比如,从A界面进入B界面在进入C界面,如果返回时,直接从C回到A,怎么做?或者说无限跳转进入BCDEF...XYZ。。。之后直接返回某一个界面,怎么做? 其实这种的有...

RainOrz
28分钟前
1
0
超好用的在线PDF转Word网站,真后悔没早发现

把PDF转成Word还是经常干的事情。 然而,下载一大堆软件来干这件简单的事情还是显得过于繁琐和复杂。 何况很多网上的软件安装常常出问题,在度娘里面搜索,然后下载又会经常遇到钓鱼网站,电...

dillonxiao
32分钟前
1
0
文章收藏

对接口或者方法进行性能测试的工具contiperf: http://www.ltesting.net/ceshi/ceshijishu/xncs/2012/1127/205747.html...

月下狼
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部