编写一个程序来读取二进制数的字节作为字符串。然后将其转换为相应的十进制数并输出。
例:如果输入是10000000,那么输出是128;输入00000001,输出为1。
要求:
1)假设所有都是非负数,即第一个位不是符号。如果输入的位数小于8,则在左边加0,使字符串有8位;
2)如果输入的位数大于8位,只使用前8位,将其余的去掉。
代码如下:
#include <stdio.h>
int main()
{
int s = 0;
int i=0;
char buf[60]={0};
printf("请输入二进制字符串:");
scanf("%s",buf); //读取二进制字符串
while(buf[i] != '\0')
{
s = s *2 + buf[i]-'0';
i++;
if(i==8) break;
}
printf("%d",s);
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
long int i,n,x=0,a;
printf("Enter any binary number: ");
scanf("%ld",&n);
printf("\nThe decimal conversion of %ld is ",n);
for(i=0;n!=0;++i)
{
a=n%10;
x=(a)*(pow(2,i))+x;
n=n/10;
}
printf("%ld",x);
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
char s[100];
int len = 0,k=0,i;
unsigned char r = 0;
gets(s);
len = strlen(s);
if(len > 8)
k = len - 8;
for(i=k;i<len;i++)
r = r*2+s[i]-'0';
printf("%d",r);
return 0;
}