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;
}

三、运行结果

相关推荐
刃神太酷啦1 小时前
MySQL 库表操作 +数据类型+ 基础概念全梳理----《Hello MySQL!》(2)
java·c语言·数据库·c++·vscode·mysql·adb
问心无愧05132 小时前
ctf show web入门108
笔记
逸模10 小时前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
Frostnova丶10 小时前
【算法笔记】数学知识
笔记·算法
xqqxqxxq10 小时前
哈希表(HashMap)技术学习笔记
笔记·学习·散列表
生而为虫10 小时前
[学习记录] 幼儿学习拼音html游戏
学习·游戏
AOwhisky10 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
xian_wwq11 小时前
【学习笔记】「大模型安全:攻击面演化史」第 07 篇-安全左移
人工智能·笔记·学习
秋雨梧桐叶落莳11 小时前
iOS——NSUserDefaults学习
学习·macos·ios·objective-c·cocoa