C语言每日一题之整数求二进制1的个数

这篇具有很好参考价值的文章主要介绍了C语言每日一题之整数求二进制1的个数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言每日一题之整数求二进制1的个数,c语言,开发语言

今天分享一道题目,用三种方法来求解
二进制1的个数

方法1
我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可

#include<stdio.h>
int num_find_1(unsigned int n)
{
	int count = 0;
	while (n)
	{
		if (1 == n % 2)
		{
			count++;
		}
		n /= 2;
	}
	return count;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = num_find_1(n);
	printf("%d", ret);
	return 0;
}

这是一种方法,另外一种就是我们可以用移位操作符来算

int num_find_1(int n)
{
	int i = 0;
	int count = 0;
	for (i = 0; i < 32; i++)
	{
		if (((n >> i) & 1) == 1)
		{
			count++;
		}
	}
	return count;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = num_find_1(n);
	printf("%d", ret);
	return 0;
}



这个方法是不是也是特别妙呢,当然还有更妙的方法,请看!!!


int num_find_1(int n)
{
	int i = 0;
	int count = 0;
	while (n)
	{
		n = n & (n - 1);
		count++;
	}
	return count;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = num_find_1(n);
	printf("%d", ret);
	return 0;
}



相信看完总会学会一种方法,今天的分享就到这里啦,不知道大家有没有注意到我的开头不一样了,嘻嘻。文章来源地址https://www.toymoban.com/news/detail-613430.html

到了这里,关于C语言每日一题之整数求二进制1的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode - 每日一题】1073. 负二进制数相加 (2023.05.18)

    基数为 -2 。 实现两个 0/1 数组串的加法。 这是一道模拟题。 设 arr1[i] 和 arr2[i] 是数组 arr1 和 arr2 从低到高的第 i 位数。 首先回顾普通的二进制数的相加,从低位开始计算,在计算的同时维护用一个变量 carry 维护进位信息,因此,对于第 i 位的结果 ans[i] = arr1[i] + arr2[i] + c

    2024年02月05日
    浏览(49)
  • 2023-5-26 LeetCode每日一题(二进制矩阵中的最短路径)

    点击跳转到题目位置 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求: 路径途

    2024年02月06日
    浏览(54)
  • 2023-06-14 LeetCode每日一题(二进制字符串前缀一致的次数)

    点击跳转到题目位置 给你一个长度为 n 、下标从 1 开始的二进制字符串,所有位最开始都是 0 。我们会按步翻转该二进制字符串的所有位(即,将 0 变为 1)。 给你一个下标从 1 开始的整数数组 flips ,其中 flips[i] 表示对应下标 i 的位将会在第 i 步翻转。 二进制字符串 前缀

    2024年02月08日
    浏览(30)
  • (位运算) 1356. 根据数字二进制下 1 的数目排序 ——【Leetcode每日一题】

    难度:简单 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入 :arr = [0,1,2,3,4,5,6,7,8] 输出 :[0,1,2,4,8,3,5,6,7] 解释

    2024年02月12日
    浏览(31)
  • 【C语言】求二进制位中一的个数

    原题链接:牛客网 题目内容: 写一个函数返回参数二进制中 1 的个数,负数使用补码表示。 比如: 15    0000 1111    4 个 1 方法一: NumberOf1函数的实现比较简单,它使用了一个循环,不断将n除以2,并判断余数是否为1。如果余数为1,则说明n的二进制表示中最低位为1,计

    2024年02月09日
    浏览(23)
  • C语言:二进制、八进制、十六进制整数的书写及输出

    目录 一、整型数据类型 二、二进制、八进制、十六进制的书写 1)二进制 以 0b / 0B 开头,不区分大小写(数字0,而非字母o,下同) 2)八进制 以数字 0 开头         3)十六进制 以 0x / 0X 开头, 三、二进制、八进制和十六进制的输出 八进制   (%o): 十六进制   (%x):

    2024年02月05日
    浏览(43)
  • 【每日一题Day218】LC1091 二进制矩阵中的最短路径 | BFS

    你驾驶出租车行驶在一条有 n 个地点的路上。这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n ,通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向。 乘客信息用一个下标从 0 开始的二维数组 rides 表示,其中 rides[i] = [starti, endi, tipi] 表示第 i 位乘客

    2024年02月08日
    浏览(30)
  • 写一个函数返回参数二进制中 1 的个数(c语言三种实现方法)

    (本文旨在自己做题时的总结,我会给出不同的解法,后面如果碰到新的题目还会加入其中,等于是我自己的题库。 方法一: 方法二: 这里说一个方法,任何一个进制数%它的进制位都可以得到它的最低位,任何一个进制数 / 它的进制位都可以将最低位丢弃。比如: 这样我

    2024年02月13日
    浏览(31)
  • 【C语言】宏实现一个整数的二进制位的奇数位和偶数位交换

    要写一个宏实现将一个整数的二进制位的奇数位和偶数位交换,我们首先要分析如何将一个整数的二进制位的奇数位和偶数位交换 以下以整数7为例 7的二进制: 0000 0000 0000 0000 0000 0000 0000 0111   7 奇数位与偶数位交换后为: 0000 0000 0000 0000 0000 0000 0000 1011  11 📖分析: 交换

    2024年02月05日
    浏览(30)
  • c语言:用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

                     用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。 如:01,是1,交换完是10,是2.                       举个例子:1001 0110                          1001 0110         奇数位上的数字是     1 0 0 1 0 1 1 0               偶数位     1 0 0

    2024年01月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包