如何输出二进制数

输出二进制的方法

水字数

  我们初学C语言都知道 %d是打印十进制%x表示打印十六进制%c是打印字符等等,但是很显然啊,我们都有尝试过 %b并不能实现打印二进制,这就需要我们自己编码让这个数转为二进制。

  方法可以是循环,可以是分支,也可以用指针的方式来实现。

循环

// 下方参与计算的数,可以换成十进制,十六进制都可以的

while语句(其实看着有点长了,把while换成for的可以少好几行):

#include<stdio.h>
int main()
{
	int a = 0b10011100, b = 0b11001010, i=0,c,n[8];	//这里a,b是参与计算的数,i作为循环粗疏,数组n用来存放二进制数最后进行一个输出,c则是存储a,b运算出来的十进制数
	c = a & b;		//存储a和b按位与运算的十进制结果
	while(c>0)		//循环条件就是在c不断被取余后还要大于0
	{
		if (c % 2 == 0)		//当c被取余并且等于0,那么就往数组里存0,否则就存1
			n[i]=0;
		else if (c % 2 != 0)
			n[i]=1;
		else			//这俩句写不写其实都行,只是想规范一点
			break;
		c = c / 2; 		//这里是让c进行一个被赋值,因为上面的模运算(也就是取余数)并不会改变c的初始值
		i++;	//i自加让数组被存储的位置不会重复冲突
	}
	for (i = 7; i > 0; i--)		//因为取余法都需要倒着读,所以我们直接把存储好的数组倒着放出来那就是所需要的二进制数了
	{
		printf("%d",n[i]);
	
	}

}
/*
for(;c>0;i++,c/=2)		//可以直接替换掉while语句段
	{
		if (c % 2 == 0)
			n[i]=0;
		else if (c % 2 != 0)
			n[i]=1;
	}
*/


    其实后面我写到循环那一章后这个都是比较简单的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值