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

三、运行结果

相关推荐
世人万千丶25 分钟前
鸿蒙Flutter Flexible与Expanded的区别
学习·flutter·harmonyos·鸿蒙
天空'之城38 分钟前
C 语言工业级通用组件手写 06:固定块内存池
c语言·嵌入式开发·内存池·底层优化
香辣牛肉饭39 分钟前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
迷途呀1 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
YM52e1 小时前
鸿蒙Flutter Center居中组件:Align对齐详解
android·学习·flutter·华为·harmonyos·鸿蒙
十月的皮皮2 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
依然范特东2 小时前
动手学深度学习笔记--卷积层、微调
人工智能·笔记·深度学习
Echo缘3 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
金伟API10243 小时前
SQL Server基础学习笔记
笔记·学习
MartinYeung53 小时前
[论文学习]MiCA:比LoRA和全参数微调学到更多知识
深度学习·学习·机器学习