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

效果展现


结语

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


相关推荐
茯苓gao2 分钟前
电路学习(一)
学习
迎風吹頭髮27 分钟前
UNIX下C语言编程与实践35-UNIX 守护进程编写:后台执行、脱离终端、清除掩码与信号处理
java·c语言·unix
qiuiuiu4131 小时前
正点原子RK3568学习日记-GIT
linux·c语言·开发语言·单片机
繁星星繁2 小时前
C++11学习笔记
c++·笔记·学习
@小博的博客8 小时前
【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇
linux·运维·学习
007php00710 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
知识分享小能手10 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
递归不收敛10 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
pytorch·学习·机器学习
很㗊10 小时前
C与C++---类型转换
c语言·开发语言
say_fall10 小时前
精通C语言(3. 自定义类型:联合体和枚举)
c语言·开发语言