欢迎光临
我们一直在努力

八进制转为二进制算法公式,二进制转八进制具体算法

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

算法思想如图所示:
八进制,十六进制,四进制,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;}

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。