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

三、运行结果

相关推荐
aramae1 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
彧azz2 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
一条小小yu4 小时前
基于数据库唯一索引 + 过期时间的分布式锁
学习
传奇开心果编程4 小时前
【ArkUI 练中学】第15课:UI 界面设计与实战
学习·ui·华为·harmonyos
zjxtxdy5 小时前
SPI通信协议
笔记·单片机
传奇开心果编程6 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
扶风ff6 小时前
练题簿小程序:家庭在线练题,课后复习更简单
学习·小程序
传奇开心果编程6 小时前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
彧azz6 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
一尘之中7 小时前
指挥控制中心与指控系统:概念、应用、厂商与DDS技术全景
学习·架构·ai写作