给定一个整数,输出这个整数二进制表示中1的个数
2017-04-09 00:04
393 查看
参考书籍:计算机组成原理-蒋本珊 java程序员面试宝典-何昊等
问题:给定一个数,输出这个数二进制表示中1的个数。
问题:给定一个数,输出这个数二进制表示中1的个数。
package com.Howard.test11; /** * 给定一个整数 输出这个整数二进制表示中1的个数 * 例如:7二进制111 则输出3 * @author Howard * 2017年4月5日 */ public class CountOne { /** * 利用位运算 * 判断该数二进制最后一位是否为0 (通过n&1是否为1来判断) * 如果为1 则计数器加1 然后右移丢弃最后一位 直到这个数为0为止 * 该算法时间复杂度为O(m) n为该数二进制的长度 * @param n * @return */ public static int countOne1 (int n) { int count = 0; while (n > 0) { if ((n & 1) == 1) count++; n >>= 1; } return count; } /** * 只考虑1的个数 * 利用n & (n - 1) 每计算一次 结果都会少了一位1 而且少的是最后一个1 * 该算法时间复杂度为O(m) m是该数二进制中1的个数 * 显然效率比上面那个的好 * @param n * @return */ public static int countOne2 (int n) { int count = 0; while (n > 0) { if (n != 0) { n = n & (n - 1); } count++; } return count; } public static void main(String[] args) { System.out.println(countOne1(7)); //111 System.out.println(countOne2(8)); //1000 } }
相关文章推荐
- 给定你任意正整数,请你输出这个正整数的二进制表示中有几个1。
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 4.输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- 2.4 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- 2.输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
- 输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
- 金山笔试题 "写一个函数,对给定整数的二进制表示进行描述"
- 给定一个整数,求它的二进制表示中有多少个1。
- 2.3题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- 位运算训练03—输入一个整数a,再输入两个整数p1,p2(p1,p2<32);将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
- 输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- Linux_C练习:输入一个整数a,再输入两个整数,输出该整数的二进制表示方法中从右端开始给定位;
- 2.2题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
- 给定一个整数,求它的二进制表示
- 给定一个整数N,求N!末尾有多少个0?N!的二进制表示中最低1的位置?