二进制转十进制函数c语言 二进制数据转换成十进制数c语言

用C语言编写二进制转换十进制的程序 。1、为了完成进制的转换,在主函数中声明了个函数Sum , 主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和 。另外定义了一个数组array[8],用于存放输入的八位二进制数 。
2、然后使用了一个for循环语句,用于输入八位二进制数 。在scanf函数里,在%d之间加了一个1,即,这样是好连续的输入八个数 , 如果没有中间的1,则编译器会认为你只输入了一个数,即那个八位数 。然后使用printf函数输出,并且调用Sum函数,数组名作为实参 。
3、在Sum函数中,又声明了一个power函数 , power函数的作用是求2的n次方 , 其实这里可以调用库函数pow,但是老师要求不调用库函数,因此就自己写了一个求2的n次方的函数,在这里n为指数,term为每一位数转换为十进制后的的数,如1*(2*2),sum为总和 。
4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环,因为二进制的最后一位转换为十进制数时指数就是零,此后循环就结束 。调用power函数时,将n作为实参,最后将和返回,即将sum作为返回值返回给Sum函数 。
5、在power函数中,如果b等于零,即指数为零,则返回1 , 否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回 。
6、最后看一下运行的结果 。
C语言 二进制数转化为十进制数思路:十进制整数转换为二进制整数采用"除2取余,逆序排列"法 。即用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来 。
参考代码:
#include "stdio.h"
void fun(int n){
if(n==0) return;
fun(n/2);
printf("%d",n%2);
}
int main() {
int n;
scanf("%d",n);
fun(n);
return 0;
}
/*
运行结果:例如求10的2进制
10
1010
*/
用C语言编写二进制转换十进制的程序1、为二进制转十进制函数c语言了完成进制的转换二进制转十进制函数c语言,在主函数中声明二进制转十进制函数c语言了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加 , 返回值就是相加后的和 。
另外定义了一个数组array[8] , 用于存放输入的八位二进制数 。
2、然后使用了一个for循环语句 , 用于输入八位二进制数 。
3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方 。
4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环 。
5、在power函数中,如果b等于零,即指数为零,则返回1 , 否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回 。
6、最后看一下运行的结果 。
如何用c语言编写二进制和十进制之间的转换二进制转十进制
n
为输入的二进制数,d用来处理该数 。
k为标志位,当k为1时表示输入的数有问题,需要重新输入 。
i为每次分解的个位数;j为二进制的权值;m为累计的十进制和;p为输入的数的位数,超过10时,该数越界,需要重新输入,定k=1 。
程序如下:
#include
conio.h
main()
{
long
int
n,d;
int
k,i,j,m,p;
do
{
k=0;
m=0;j=1;i=0;p=0;
printf("\ninput
an
number
only
includes
or
1:");
scanf("%ld",n);
if(n0)
k=1;
d=n;
while(d)
{
i=d;p;
if(i1
||
p10)
{k=1;break;}
m =i*j;
j=j*2;
d/=10;
}
}
while(k==1
||
m==0);
printf("\n
the
number
is
%d\n",m);
getch();
}
怎样用C语言将二进制数转换成十进制将二进制转成十进制 , 按权值展开求和即可 。
可以通过以下代码解决:
#include stdio.h
#include stdlib.h
int main()
{
【二进制转十进制函数c语言 二进制数据转换成十进制数c语言】char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len=16)
{
for(i=0;ilen;i)
{
m=1;
if(a[i]=='1')
{
for(j=1;j=len-i-1;j)
m*=2;
sum =m;
}
}
printf("%d",sum);
}
return 0;
}
扩展资料:
我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位 。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位 。
十进制转二进制:十进制数除2取余法 , 即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止 。
八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零 。
十六进制转二进制:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零 。
负数的进制转换稍微有些不同 。
先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行 。
例:要求把-9转换为八进制形式 。则有:
-9的补码为1111 1111 1111 0111 。从后往前三位一划,不足三位的加0
111----7
110----6
111----7
111----7
111----7
001----1
然后我们将结果按从下往上的顺序书写就是:177767 , 那么177767就是十进制数-9的八进制形式 。
其实转化成任意进制都是一样的 。
参考资料:
二进制——百度百科
十进制——百度百科
二进制转十进制函数c语言的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于二进制数据转换成十进制数c语言、二进制转十进制函数c语言的信息别忘了在本站进行查找喔 。

    推荐阅读