方法一:从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
例:二进制数1101.01转化成十进制
1101.01(2)
=1*2【0】+0*2【1】+1*2【2】+1*2【3】 +0*2【-1】+1*2【-2】
=1+0+4+8+0+0.25=13.25(10)
方法二:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。
对于有n位整数,m位小数的二进制数用加权系数展开式表示,可写为:N(2)=an-1×2n-1+an-2×2n-2+……+a1×21+a0×20+a-1×2-1+a-2×2-2+……+a-m×2-m(10)式中aj表示第j位的系数,它为0和1中的某一个数。
例:二进制数1101转化成十进制
1101(2)
=1*2【3】+1*2【2】+0*2【1】+1*2【0】
=13(10)
注意:
1、【】括号内数字代表次方,如【2】为二次方,【-1】为负一次方。
2、()括号内代表进制数,(2)为二进制,(10)为十进制。
二进制转换十进制:#include <stdio.h>#include <string.h>
#include <math.h>int main()
{
char binary[20]
float ten=0
int i=0,t,k
scanf("%s",binary)
k=strlen(binary)
while(k--)
{
t=binary[k]-'0'
if(t)
ten+=pow(2,i)
i++
}
printf("%.0f\n",ten)
return 0
}十进制转换成二进制,八进制,十六进制的#include <stdio.h>/*输出*/
void print(int i,char *s)
{
while(i--)
{
printf("%c",s[i])
}
printf("\n")
}/*十进制转换八进制*/
void TentoE(int n)
{
int i=0
char str[10]
while(n>0)
{
str[i]=n%8+'0'
n/=8
i++
}
printf("Octal:")
print(i,str)
}/*十进制转换十六进制*/
void TentoHex(int n)
{
int i=0,t
char str[10]
while(n>0)
{
t=n%16
if(t>=10)
{
str[i]=t%10+'a'
}
else
str[i]=n%16+'0'
n/=16
i++
}
printf("Hex:")
print(i,str)
}/*十进制转换二进制*/
void TentoB(int n)
{
int i=0
char str[20]="\0"while(n>0)
{
str[i]=n%2+'0'
n/=2
i++
}
printf("Binary:")
print(i,str)
}
void main()
{
int x
scanf("%d",&x)
TentoB(x)//转换二进制并输出
TentoE(x)//转换八进制并输出
TentoHex(x)//转换十六进制并输出
}二进制转换任意进制:#include <stdio.h>
#include <string.h>
#include <math.h>int main()
{
char binary[20]
float ten=0
int i=0,t,k,nscanf("%s",binary)//输入二进制
scanf("%d",&n)//输入要转换的进制.
k=strlen(binary)
/*先将二进制转换成十进制*/
while(k--)
{
t=binary[k]-'0'
if(t)
ten+=pow(2,i)
i++
}
/*再将十进制转换成n进制*/
t=teni=0
memset(binary,'\0',20)//将字符数组清空.
while(t)
{
binary[i++]=t%n+'0'
t/=n
}
while(i--)
{
printf("%c",binary[i])
}
return 0
} 满意还请采纳..
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int a = 0b10000001printf("%d", a)。
3、编译器运行test.cpp文件,此时输入的8位二进制数被成功用十进制进行了输出。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)