比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
1.用模2除2的方法
(1)正数
11
//00000000 00000000 00000000 00001011--11的二进制
//11%2==1 //有1
//11/2=5 //00000000 00000000 00000000 00000101--5的二进制,尾部丢掉一个1
//5%2==1 //有1
//5/2==2 //00000000 00000000 00000000 00000010--2的二进制,尾部丢掉一个1
//2%2==0 //没有1了,跳过末尾的0,继续往前找,看还有没有1
//2/2==1 //00000000 00000000 00000000 00000001--1的二进制,尾部丢掉一个1
//1%2==1 //还有1
//1/2==0 //00000000 00000000 00000000 00000000--0的二进制,尾部丢掉一个1,彻底没有1了
test.c
#include<stdio.h>
int count_one_bits(unsigned int n)
{
int count = 0;
while (n!=0)//二进制数中必有1
{