IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言二进制题目 -> 正文阅读

[数据结构与算法]C语言二进制题目

求一个整数存储在内存中的二进制中1的个数

求一个整数存储在内存中的二进制中1的个数

1.

函数中的参数必须转化为无符号数,否则无法计算负整数在内存中存储的二进制中1的个数。

#include<stdio.h>
int search_one(unsigned int n)//将负数转化为无符号数
{
	int count = 0;
	while (n)
	{
		if(n % 2 == 1)
			count++;
		n /= 2; 
	}
	return count;
}
int main()
{
	int n;
	scanf("%d", &n);
	int ret = search_one(n);
	printf("%d\n", ret);
	return 0;
}

2.

& - 按位与(二进制位)--对应的二进制位只要有一个是0则为0,两个是1才为1

n&1==1则最低位一定为1

#include<stdio.h>
int main()
{
	int n, count = 0;
	scanf("%d", &n);
	for (int i = 0;i < 32;i++)
	{
		if (((n >> i) & 1) == 1)
		{
			count++;
		}
	}
	printf("%d\n", count);
	return 0;
}

3.此方法效率更高

?

计算一个整数二进制中1的个数可采用 -?num = num & (num - 1)

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

求二进制中不同位的个数

求二进制中不同位的个数,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

#include<stdio.h>

int get_diff_bit(int m, int n)
{
	int count = 0;
	int k = m ^ n;
	while (k)
	{
		k = k & (k - 1);
		count++;
	}
	return count;
}
int main()
{
	//异或 - 对应的二进制位相同则为0,相异则为1
	int m, n;
	scanf("%d %d", &m, &n);
	int ret = get_diff_bit(m, n);
	printf("%d\n", ret);
	return 0;
}

打印二进制的奇数位和偶数位

获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

分别移动到这个数的奇数位(偶数位)并按位与1,若是奇数就会打印1,若是偶数就会打印0。

#include<stdio.h>
void print(int n)
{
	int i = 0;
	printf("奇数位: ");
	for (i=30;i>=0;i-=2)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("偶数位: ");
	for (i=31;i>=1;i-=2)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
}
int main()
{
	int n;
	scanf("%d", &n);
	print(n);
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:14:34  更:2021-12-18 16:16:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:31:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码