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

效果展现


结语

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


相关推荐
2501_9418649614 分钟前
科学方法论破解学习时间堆砌误区
学习
郝学胜-神的一滴16 分钟前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
1024小神1 小时前
SVG标签中path路径参数学习
学习
island13141 小时前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
浅念-1 小时前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
JQLvopkk2 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
简佐义的博客2 小时前
生信入门进阶指南:学习顶级实验室多组学整合方案,构建肾脏细胞空间分子图谱
人工智能·学习
近津薪荼2 小时前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
rannn_1112 小时前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习