八进制转为二进制算法

八,十六,四进制转为二进制

算法思想如图所示:
八进制,十六进制,四进制,N进制(N是2的x次方)都可以用这个算法!我这里用八进制为例。
算法思想如图
这个算法主要有两点
1.把要转换的数拆分成单个的数存入数组1。
2.把单个的八进制数,转成3个二进制数存入数组2。
代码实现如下:

//fun的功能是将八进制转换为二进制
//算法思想,将八进制数拆成单个的八进制位数,然后将1个八进制位数,转换成3个二进制位数。
void fun1(int b)
{
	//数组e1存放被拆分好的八进制位数。
	//e1可以多申请点儿空间,以便存入较多的数据,转换较大的八进制数。
	int e1[1000];
	int i = 0;
	int a1;
	int b1 = b;
	//拆分数据,并且放入数组。(*注意这里把八进制的最高位,放到了数组的最后)
	for (; b1 != 0 ;)
	{
		a1 = b1%8;
		e1[i] = a1;
		b1 = b1/8;
		i++;
	}
	//i是数组e1最后一个元素的下标。
	i--;

	//数组t用来存放单个八进制数位转换的二进制位数。
	//(注意:数组e1最后的数据,被存放在了数组t的最前面。也就是说八进制的最高位被存放在了数组t的前面)
    int t[1000];
	int u = 0;
	int a2;
	int b2;
	//记录数组t的元素个数
	int num2 = 0;
	for (; i >= 0 ; i--)
	{	//注意把1个八进制位数得到的3个二进制位数倒着存放在数组t中
		
		u = u + 2;
		//内层循环:将一个八进制数位,转换成三个数位。
		for (int i1 = 0 ; i1 < 3 ; i1++)
		{
			a2 = e1[i]%2;
			t[u] = a2;
			u = u - 1;
			b2 = e1[i]/2;
			num2++;
		}
		//内层循环新起点
		u = u + 4;
	}
	// 数组t的最后一个元素的下标
	u = u - 1;

	//经过上面的处理,八进制位数转换成的二进制位数,已经被存放在了数组t内(t有num2个元素,最后一个元素下标为u)
	for (int i2 = 0 ; i2 < num2 ; i2++)
	{
		//循环打印数组元素,得到转换后的二进制数。
		cout<<t[i2];
	}
	cout<<endl;
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值