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

效果展现


结语

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


相关推荐
LDR00611 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
通信小呆呆11 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick11 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee11 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Luminous.11 天前
C语言--day30
c语言·开发语言
Alsn8611 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
玖玥拾11 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
YM52e11 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
謓泽11 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
小雨下雨的雨11 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙