C (统计二进制中“1“的个数)

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int num_of_1(int n)

{

//1.数学方法

//int count = 0;

//while (n)

//{

// if (n % 2 == 1)

// {

// count++;

// }

// n /= 2;

//}

//return count; // 由于负数的反码特殊,所以函数接收调整为无符号整形

//2.与运算+位运算 >

//int count = 0;

//while (n)

//{

// if (n & 1 == 1)

// {

// count++;

// }

// n >>= 1; // 由于负数的进制位移动时左边可能不补零,所以函数接收调整为无符号整形

//}

//return count;

//2.与运算+位运算 > (改进型,对整形的正负无要求)

int count = 0;

int i = 0;

for (i = 0; i < 32; i++)

{

if (((n >> i) & 1 ) == 1)

{

count++;

}

}

return count;

//3. x & (x-1) 特殊运算

//int count = 0;

//while (n)

//{

// n = n & (n - 1);

// count++;

//}

//return count;

}

//统计二进制中 '1' 的个数

int main()

{

//输入10进制整数

int input = 0;

printf("请输入整数:");

scanf("%d", &input);

//计算并输出

int ret;

ret = num_of_1(input);

printf("%d 的二进制格式中'1'的个数为:%d\n", input, ret);

return 0;

}

相关推荐
黛色正浓3 分钟前
leetCode-热题100-普通数组合集(JavaScript)
java·数据结构·算法
元亓亓亓7 分钟前
LeetCode热题100--5. 最长回文子串--中等
linux·算法·leetcode
月明长歌7 分钟前
Java多线程线程池ThreadPoolExecutor理解总结:6 个核心参数 + 4 种拒绝策略(附完整示例)
java·开发语言
千金裘换酒11 分钟前
LeetCode 环形链表+升级版环形链表
算法·leetcode·链表
小鸡吃米…11 分钟前
机器学习中的随机森林算法
算法·随机森林·机器学习
学编程的小鬼14 分钟前
JVM 常见的问题
开发语言·jvm
故事不长丨16 分钟前
C#File文件操作全解析:从基础用法到异常处理
服务器·开发语言·visualstudio·c#·文件操作·io流·file
lowhot21 分钟前
C语言UI框架
c语言·开发语言·笔记·ui
霁月中27 分钟前
[Codeforces Round 1065 (Div. 3)](A-D,F)
算法
gihigo199830 分钟前
使用MATLAB绘制3D心形图和玫瑰花图案
开发语言·matlab·3d