C语言学习笔记20260603-打印整数(32位)二进制的奇数位和偶数位(2种方法)

一、打印整数(32位)二进制的奇数位和偶数位

二、代码

c 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// 打印整数(32位)二进制的奇数位和偶数位
// 规则:位编号从 低位(0) ~ 高位(31)
// 偶数位:0、2、4、6 ... 30 位
// 奇数位:1、3、5、7 ... 31 位

//-------------------------------------------
// 方法1:双循环分别打印(逻辑简单)
//-------------------------------------------
void print1(int num)
{
	int i = 0;

	// 打印偶数位(0、2、4、6 ... 30)
	printf("方法1-偶数位(0、2、4...30位)为:");
	for (i = 0; i < 32; i += 2)   // 每次+2,只遍历偶数位
	{
		// 取出第 i 位,打印
		printf("%d ", (num >> i) & 1);
	}
	printf("\n");

	// 打印奇数位(1、3、5、7 ... 31)
	printf("方法1-奇数位(1、3、5...31位)为:");
	for (i = 1; i < 32; i += 2)   // 每次+2,只遍历奇数位
	{
		printf("%d ", (num >> i) & 1);
	}
	printf("\n");
}

//-------------------------------------------
// 方法2:单循环实现(更高效写法)
//-------------------------------------------
void print2(int num)
{
	// 定义两个数组,分别存储 偶数位、奇数位
	int even[16] = { 0 };  // 偶数位:共16位
	int odd[16] = { 0 };   // 奇数位:共16位
	int i = 0;
	int e = 0, o = 0;      // 数组下标

	// 只用 1 个循环遍历 32 位
	for (i = 0; i < 32; i++)
	{
		// 取出第 i 位的值(0 或 1)
		int bit = (num >> i) & 1;

		// 判断当前位是偶数位还是奇数位
		if (i % 2 == 0)
		{
			even[e++] = bit;  // 偶数位存入 even 数组
		}
		else
		{
			odd[o++] = bit;   // 奇数位存入 odd 数组
		}
	}

	// 打印偶数位结果
	printf("方法2-偶数位(0、2、4...30位)为:");
	for (i = 0; i < 16; i++)
	{
		printf("%d ", even[i]);
	}
	printf("\n");

	// 打印奇数位结果
	printf("方法2-奇数位(1、3、5...31位)为:");
	for (i = 0; i < 16; i++)
	{
		printf("%d ", odd[i]);
	}
	printf("\n");
}

//-------------------------------------------
// 主函数
//-------------------------------------------
int main()
{
	int num;

	// 提示输入整数
	printf("请输入一个整数:\n");
	scanf("%d", &num);

	// 调用方法1:双循环打印
	print1(num);
	printf("\n");

	// 调用方法2:单循环打印
	print2(num);

	return 0;
}

三、运行结果

相关推荐
命运之光11 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光11 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
今儿敲了吗13 小时前
CO——CPU
笔记
今儿敲了吗13 小时前
Python ——第三方包
笔记·python
圆奋奋13 小时前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos
沫璃染墨13 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
吃着火锅x唱着歌13 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习
落知秋13 小时前
RUST中的trait是什么?
笔记·rust
xian_wwq14 小时前
【学习笔记】Prompt Engineering 没死,只是它不再够用了-2/16
笔记·学习·prompt
天吾cc14 小时前
RTT-ADC
单片机·嵌入式硬件·学习