C语言每日一题(4):打印二进制的奇数位和小数位


  • 文章主题:打印二进制的奇数位和小数位🔥
  • 所属专栏:C语言每日一题📗
  • 作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶
  • 个人主页:₽的个人主页🏄🌊

目录


前言

编程起因

最近刚学位操作符以及二进制码的相关知识,于是想出了打印二进制的奇数位和小数位这道题加深一下自己对于这方面的理解。

项目介绍

设计了一个打印二进制奇数位和偶数位数值功能的项目。


设计思路

1.整体逻辑

与原来设计Count_1()函数的原理相同,都是通过对数值二进制码的二进制位进行移动来达到最后一位变成想要判断的位置的目的,不同的是该函数虽然也是for()循环结构,但是是循环的变量始终都是针对原二进制码的,不随二进制码的每次移位而发生变化(当然如果设置循环次数还是32,第一位给到一个储存奇数位数组,第二位给到一个储存偶数位数组,再把它们分两行分别输出出来,也是可以做到这一点的,只不过这种做法会明显负杂得多)的for (int bits = 30; bits >= 0; bits -= 2)以及for (int bits = 31; bits >= 1; bits -= 2)结构,这里打破了一点思维定式,for()循环中的调整部分(第三项)可以不是自增或者自减符,只要是一个C语句就行,甚至可以是函数,其实初始化部分也是如此,唯独一定对应的只有判断部分,for()中的第一和最后一位的名字只不过是根据它们大部分情况下的作用所起的名字,实际上真正对应名字的只有第二位,本质上也就是for()和三语句只是控制了循环执行这三条语句的顺序而已,以及只给第二条语句增加了对应名字的每个循环都要有的判断条件的功能。

2. 具体逻辑

与代码展示中的逻辑相同这里不作过多解释


代码展示

c 复制代码
#include <stdio.h>
int main()
{
	int num = 0;
	printf("Please enter a number:");
	scanf("%d", &num);
	printf("The binary sequence of odd digits in this number:\n");
	for (int bits = 30; bits >= 0; bits -= 2)//奇数位的打印(通过遍历不同的偶数形式
	                                         //的二进制位个数来使每一次该数对应的二
	                                         //进制码的最后一位都是奇数位的二进制位)
	{
		printf("%d ", (num >> bits) & 1);//先通过右移操作符让表达式产生一个移位后对
		                                 //应的二进制码,在和前文设计Count_1()函数
		                                 //一样的原理与1相交用十进制得出二进制码奇
		                                 //数位的数字(注意因为这里的移位个数是for循
		                                 //环中的变量值,所以是变动的而不是相等的,因
		                                 //每次的参考都是原始的二进制码,因此这里我们
		                                 //只能用表达式求每一次的位值但不能每次求时又
		                                 //把新的二进制码值赋还给num。
	}
	printf("\n");
	printf("The binary sequence of even digits in this number:\n");
	for (int bits = 31; bits >= 1; bits -= 2)//偶数位的打印(通过遍历不同的奇数形式
	                                         //的二进制位个数来使每一次该数对应的二
	                                         //进制码的最后一位都是偶数位的二进制位)
	{
		printf("%d ", (num >> bits) & 1);//与上文中奇数位的道理相同,只不过是移位的
		                                 //移位和对应最后一位是原始二进制码的奇偶数
		                                 //位这两者的奇偶性刚好对调而已
	}
	return 0;
}

效果展现


结语

以上就是我对打印二进制的奇数位和小数位这个项目的解题思路和代码以及做好后效果的展示,作为刚学编程的小白,可能在一些设计逻辑方面有些不足,欢迎评论区进行指正!看都看到这了,点个小小的赞或者关注一下吧(当然三连也可以~),你的支持就是博主更新最大的动力!让我们一起成长,共同进步!


相关推荐
楚山之石2 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
Zwawa3 小时前
编译器工具链:GCC、Clang、MSVC、ICC、armclang
c语言·嵌入式·编译器
学逆向的3 小时前
C 指针常量与常量指针
c语言·开发语言·网络安全
Li_RuiQi3 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
水饺编程4 小时前
第2章:Linux 基础,exit 命令
linux·c语言·汇编
极客 - L U6 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
SteveSenna6 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
Li_RuiQi8 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
谙弆悕博士8 小时前
用 C 写了个 Windows 聊天室,踩了几个多线程和控制台的坑
c语言·开发语言·c++·windows·网络编程·聊天室
Canmag 兴隆磁性8 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率