二进制111010111001转换成十进制?
2个回答
展开全部
方法1,调用 系统函数 strtol(s,0,2); s是用字符串形式存放的2进制数值,参数三那个2表示字符串里的数值是 2 进制,(中间那个 0 实际上是 char *pEnd; -- 你不必深究。)。返回值 就是 10进制数值。
方法2,相当于手算。用各位的 2 的次方计算,并加起来。右数第一位是个位,是2的0次方,右数第2位是2的1次方,右数第i位是2的 i-1次方。位数多时,可用 pow(2,i-1) 计算。
#include <stdio.h>
#include <math.h>
int main(){
char s[]="111010111001";
int a;
a = strtol(s,0,2);
printf("%d\n",a);
//----
a=0;
a=pow(2,11)+pow(2,10)+pow(2,9)+pow(2,7)+pow(2,5)+pow(2,4)+pow(2,3)+1;
printf("%d\n",a);
return 0;
}
输出:
3769
3769
方法2,相当于手算。用各位的 2 的次方计算,并加起来。右数第一位是个位,是2的0次方,右数第2位是2的1次方,右数第i位是2的 i-1次方。位数多时,可用 pow(2,i-1) 计算。
#include <stdio.h>
#include <math.h>
int main(){
char s[]="111010111001";
int a;
a = strtol(s,0,2);
printf("%d\n",a);
//----
a=0;
a=pow(2,11)+pow(2,10)+pow(2,9)+pow(2,7)+pow(2,5)+pow(2,4)+pow(2,3)+1;
printf("%d\n",a);
return 0;
}
输出:
3769
3769
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询