c语言二进制十进制数
㈠ 如何用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语言编写二进制转换十进制的程序。
1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。另外定义了一个数组array[8],用于存放输入的八位二进制数。
㈢ C语言 将一个二进制数,转换为对应的十进制数。
#include<stdio.h>
#include<math.h>
int main()
{
int a[10] = {1,0,0,1,0,1,1,0,0,0};//这里只是预先写好的二进制数,可以自行改为主动输入,主要体现过程
int i = 0;
int sum = 0;
for(i = 9;i>=0;i--)//9为数组最后一位
{
sum = sum + a[i];pow(2,abs(i-9));//i- 9 的绝对值判定乘以2 的几次方
}
printf("%d\n",sum);
return 0;
}
㈣ C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出
将二进制数转换成十进制,一般是从字符串转换成一个整数,按位值乘以权值相累加得到结果。
如:1010=1*2^3+0*2^2+1*2+0
=((((1*2)+0)*2)+1)*2+0
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)
实现方法:
#include <stdio.h>
void swap( char *a, char *b )
{
char t=*a;
*a=*b;
*b=t;
}
char *reverse(char *s,int len)
{
char *b=s, *e=s+len-1;
while( b<e )
{
swap(b++,e--);
}
return s;
}
char *dec2bin(n)
{
static char str[33];
int i=0;
do {
str[i++]=n%2+'0';
n/=2;
}while( n );
str[i]=0;
return reverse(str,i);
}
int bin2dec(char *s)
{
int i,n=0;
for( i=0;s[i];i++ )
n=n*2+s[i]-'0';
return n;
}
void main()
{
int n=100;
char *p;
p=dec2bin(n);
printf("%d(D)=%s(B)\n", n, p );
n=bin2dec(p);
printf("%s(B)=%d(D)\n", p, n );
}运行结果:
100(D)=1100100(B)
1100100(B)=100(D)
㈤ 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语言 二进制数转化为十进制数
思路:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。即用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
参考代码:
#include"stdio.h"
voidfun(intn){
if(n==0)return;
fun(n/2);
printf("%d",n%2);
}
intmain(){
intn;
scanf("%d",&n);
fun(n);
return0;
}
/*
运行结果:例如求10的2进制
10
1010
*/