用C语言编写二进制转换十进制的程序

用C语言编写二进制转换十进制的程序,第1张

1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。

另外定义了一个数组array[8],用于存放输入的八位二进制数。

2、然后使用了一个for循环语句,用于输入八位二进制数。

3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方。

4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环。

5、在power函数中,如果b等于零,即指数为零,则返回1,否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回。

6、最后看一下运行的结果。

可以用直接法和间接法转换。

1、(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。

(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:

①整数部分

方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

②小数部分

方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。

2、十进制的转换到十六进制:

十六进制与八进制有很多相似之处,可以参照上面八进制与十进制的转换实现这两个进制之间的转换。

typedef int SElemType//定义栈元素类型为整型

#include"malloc.h"

#include"stdio.h"

#include"stack.h"//顺序栈定义及基本 *** 作

void conversion(){

//对于输入的任意一个非负十进制数,打印输出与其等值的八进制数

SqStack s

unsigned n/* 非负整数 */

SElemType e

InitStack(&s)//初始化空栈

scanf("%d",n)

if(n) printf("输入十进制数为:\d\n",n)

while(n){

Push(s,n%8)

n=n/8

}

printf("转为八进制数为:")

while(!StackEmpty(s)){

Pop(s,e)

printf("%d",e)

}

printf("\n")

}//conversion

void main()

{

conversion()

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11167111.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存