C求解一个数二进制1的个数

#include <iostream>
using namespace std;
int Grail(int x)
{
	int N=0;
	while(x)
	{
		x=x&(x-1);
		N++;
	}
	return N;
}
int main()
{
	cout<<Grail(7)<<endl;
	//0111
	//0110

	//0101
	//0100

	//0100
	//0011

	return 0;
}

时间: 2024-08-11 09:48:32

C求解一个数二进制1的个数的相关文章

【c语言】统计一个数二进制中的1的个数

// 统计一个数二进制中的1的个数 #include <stdio.h> int count(int a) { int count = 0; while (a) { count++; a = a & (a - 1); } return count; } int main() { printf("%d\n", count(10)); printf("%d\n", count(0)); printf("%d\n", count(-

c语言:获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列. 程序: #include<stdio.h> int main() { int i, j, num; char arr1[16]; char arr2[16]; printf("输入一个整数:"); scanf("%d", &num); for (i = 0, j = 0; i < 32; i += 2, j++) { arr1[15 - j] = (num >> 

求整型中二进制1的个数

1. 确定二进制1的个数: ->循环死& ->x-1&x ->查表,分写死与动态生成,动态生成方法:BitsSetTable256[i] = (i &1) + BitsSetTable256[i /2]; ->并行位运算: int BitCount4(unsigned int n) {    n = (n &0x55555555) + ((n >>1) &0x55555555) ;    n = (n &0x3333333

(笔试题)二进制1的个数相同的距离最小数

题目: 输入:整数A 输出:整数B 条件:A和B的二进制1的个数相同,且A和B之间的距离|A-B|最小. 思路: 根据题意,A和B的二进制1的个数相同,且要求距离最小,那么A和B的差别就在于相邻的bit位,如1100和1010,0011和0101等. 当A的最后一位(低位)为0,则找到最后(右边)一位1,然后将该1与左边的0交换,即得到B:如1100和1010 当A的最后一位(低位)为1,则找到最后(右边)一位0,然后将该0与右边的1交换,即得到B.如0011和0101 代码: #include

计算int 型数值在内存中二进制1的个数

今天在华为OJ上遇到这么一个题目,很简单,但是却总是得不到最好的成绩记录.因此比较了自己的程序.思路与别人的异同,发现还是有很大区别的,遂记录如下. 题目-- 输入一个int型整数,求该整数的二进制在内存中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 思路1 <span style="font-size:18px;">public static void main(String[] args) { Scanner scanner = new

C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

#include <stdio.h> /* 十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方: 在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15 例如:CE=12*16^1+14*16^0=192+14=206 */ unsigned short int right(unsigned short int num, int n){ return (num<<n) | (num>>(sizeof

poj3252--Round Numbers(组合篇1--求1到n内的二进制数中0的个数大于1的个数)

Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9525   Accepted: 3420 Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors',

[ACM] POJ 3252 Round Numbers (一个区间内二进制中0的个数大于等于1的个数有多少个,组合)

Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8590   Accepted: 3003 Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors',

c++实验5--统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数。

一.问题及代码 /* * 文件名称: * 作 者: 杨楚莛 * 完成日期: 2016 年 5 月 3 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数. * 输入描述: * 问题描述: * 程序输出: * 问题分析: * 算法设计: */ #include<iostream> #include<cstdio> using namespace std; int main() { char str[50]; in