Ⅰ 编程 c语言二进制怎么转化为十进制
int fun(int j);
void main()
{
int i;
char Binary[100];
cout << "请输入要转化为10进制的2进制数" << endl;
cin >> Binary;
char * p = Binary;
i = strlen(Binary) - 1;
int Dec = 0;
int j = 0;
while (i >= 0)
{
Dec = Dec + (*(p + i) - 48 )* fun(j);
j++;
i--;
}
cout << Dec << endl;
}
int fun(int j)
{
int JI = 1;
for(int i = 0; i < j; i++)
{
JI = JI * 2;
}
return JI;
}
这个是比较简单易懂的函数,看看吧。当然可以用另一种方法,就是新手会比较容易晕。
Ⅱ c语言二进制转十进制
一下两个程序均在VC在编译通过。
/*
如果这个二进制数比较大的话, 大到只能用数组储存这个二进制数,
当然如果大到转化成10进制int存不下的情况那另当别论
*/
#include<stdio.h>
#include<string.h>
int main()
{
char a[33];
int i, num = 0;
scanf("%s", a);
for(i=strlen(a)-1; i>=0; i--)
{
num*=2; /*如果用位运算的话,速度会更快*/
num+=a[i]-'0';
}
printf("%d\n", num);
return 0;
}
/*
如果这个二进制数的位数不超过10位的话
可用这个程序
*/
#include<stdio.h>
int main()
{
int num = 0, a, j=1;
scanf("%d", &a);
while(a)
{
num += (a%10) * j;
a /= 10;
j *= 2;
}
printf("%d\n", num);
return 0;
}
Ⅲ 如何用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
0
or
1:");
scanf("%ld",&n);
if(n<0)
k=1;
d=n;
while(d)
{
i=d%10;p++;
if(i>1
||
p>10)
{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()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len<=16)
{
for(i=0;i<len;i++)
{
m=1;
if(a[i]=='1')
{
for(j=1;j<=len-i-1;j++)
m*=2;
sum+=m;
}
}
printf("%d",sum);
}
return 0;
}
(4)2转十进制c语言扩展阅读:
我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢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语言怎么将2进制转化为10进制
#include<stdio.h>
intSum(inta[]);
intpower(intb);
intmain()
{
intarray[8],i;
printf("输入一个8位二进制数:");
for(i=0;i<8;i++)
{
scanf("%1d",&array[i]);
}
printf("转换为十进制数后是:%d ",Sum(array));
return0;
}
intSum(inta[])
{
intn,i,sum=0,term;//n为指数,term为每一项的值,如1*(2*2),sum为总和
for(i=0,n=7;i<8;i++,n--)
if(n>=0)
{term=a[i]*power(n);
sum=sum+term;
}
returnsum;
}
intpower(intb)
{
inti=2,j=1;
if(b==0)
i=1;
for(;j<b;j++)
i=2*i;
returni;
}
Ⅵ 用C语言编写二进制转换十进制的程序。
一下两个程序均在VC在编译通过。
/*
如果这个二进制数比较大的话,
大到只能用数组储存这个二进制数,
当然如果大到转化成10进制int存不下的情况那另当别论
*/
#include<stdio.h>
#include<string.h>
int
main()
{
char
a[33];
int
i,
num
=
0;
scanf("%s",
a);
for(i=strlen(a)-1;
i>=0;
i--)
{
num*=2;
/*如果用位运算的话,速度会更快*/
num+=a[i]-'0';
}
printf("%d\n",
num);
return
0;
}
/*
如果这个二进制数的位数不超过10位的话
可用这个程序
*/
#include<stdio.h>
int
main()
{
int
num
=
0,
a,
j=1;
scanf("%d",
&a);
while(a)
{
num
+=
(a%10)
*
j;
a
/=
10;
j
*=
2;
}
printf("%d\n",
num);
return
0;
}
Ⅶ c语言2进制转换10进制
#include<stdio.h>
intmain()
{
intr=0;
intc;
while((c=getchar())!=EOF)
{
if(c=='0'||c=='1')
{
r<<=1;
r|=c-'0';
}
elsebreak;
}
printf("%d ",r);
}
Ⅷ 用C语言编写二进制转换十进制的程序。
1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。另外定义了一个数组array[8],用于存放输入的八位二进制数。