【C language】统计某数中二进制1的个数

简介: 【C language】统计某数中二进制1的个数

题解:统计某数中二进制1的个数(取模法 + 看某位是1/0法 + 干掉最右边的1法)

=

1.题目

题目:设计一个程序,统计某数中二进制1的个数

2.取模法

int main()
{
  int num = 15;
  int count = 0;
  while (num)
  {
    if (num % 2 == 1) count++;
    num /= 2;
  }
  printf("count = %d\n", count);
  return 0;
}=

缺点:当num < 0时,result error!!!

示例:

3.看某位是1/0

确定某一位是0/1,公式如下

公式:ret = (n >> i) & 1

详情:LINK

int main()
{
  int num = -1;
  int count = 0;
  int i = 0;
  while (i < 32)
  {
    if (((num >> i) & 1) == 1) count++;
    i++;
  }
  printf("count = %d\n", count);
  return 0;
}=

4.干掉最右边的1

干掉二进制最右边的1,公式如下:

公式:ret = n & (n - 1)

详情:LINK

int main()
{
  int num = -1;
  int count = 0;
  while (num)
  {
    num = (num & (num - 1));
    count++;
  }
  printf("count = %d\n", count);
  return 0;
}=

EOF

相关文章
|
2月前
【C language】两个数的交换
【C language】两个数的交换
|
5月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
36 0
|
5月前
|
存储 C语言
C语言训练:三个字符串比较大小,实现两个整数数的交换统计二进制中1的个数
C语言训练:三个字符串比较大小,实现两个整数数的交换统计二进制中1的个数
|
Shell Perl
2、计算文档每行出现的数字个数,并计算整个文档的数字总数
2、计算文档每行出现的数字个数,并计算整个文档的数字总数
67 1
计算二进制中1的个数
计算二进制中1的个数
59 0
|
算法 Python
一日一技:如何统计一个数字的二进制值里面有多少个1
一日一技:如何统计一个数字的二进制值里面有多少个1
207 0
|
JavaScript 前端开发
JavaScript中统计字符的个数
JavaScript中统计字符的个数
|
移动开发 网络协议 测试技术
统计不同类型的字符个数 | 学习笔记
快速学习统计不同类型的字符个数
统计不同类型的字符个数 | 学习笔记
|
机器学习/深度学习 算法
算法 | 妙法统计二进制中1的个数
二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)
124 0
算法 | 妙法统计二进制中1的个数
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
统计二进制中1的个数,,,写一个函数,返回参数二进制中1的个数 写一个代码判断一个数字是不是2的n次方
124 0