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;

}

相关推荐
被AI抢饭碗的人3 小时前
算法题(254):灾后重建
算法·leetcode·职场和发展
mm-q29152227293 小时前
Java并发编程从入门到进阶 多场景实战
java·开发语言
深度学习机器3 小时前
RAG的另一种思路,基于文档树结构的推理型检索
人工智能·算法·架构
深度学习机器4 小时前
Agent架构新方向?Claude Skills工作原理解析
人工智能·算法·架构
nice_lcj5204 小时前
认识多线程:单例模式
java·开发语言·单例模式
是苏浙4 小时前
零基础入门C语言之数据在内存中的存储
c语言·开发语言
Shylock_Mister4 小时前
ESP32事件组替代全局变量:高效控制任务循环
c语言·单片机·物联网
wjs20244 小时前
HTMLCollection 对象
开发语言
蓝色汪洋4 小时前
最近联系人-有点疑惑
算法