系统粉 > 电脑问答 > 其他问答

已解决帮帮我看一个C的问题。

提问者:love赤堤桃子  |  浏览次  |  提问时间:2017-02-08  |  回答数量:3

牋牋编程实现输入一个8位的二进制数,将其转换为十进制数输出。将二进制转换为十进制,只要将二进制数的每一位乘以该位的权然后相加。例如:000011012 = 0(27) + 0(26) + 0(25) + 0(24) + 1(23) + 1(22) + 0(21) + 1(20)= 1310 要求定义一个求x的n次方的函数power。(注:不能调用系统函数,而是自己实现)。在主函数中输入二进制数(如:000011012),调用自定义的power函数实现转换,并输出结果。帮帮忙

已有3条答案
天天无限吧务组

天天无限吧务组

回答数:68  |  被采纳数:106

二进制转10进制不需要power#include "string.h"#include "stdio.h"void main(){ char str[]="10101110"; int value=0; int len=strlen(str); for(int i=len-1;i>=0;i--) { value|=((str[i]-&#39;0&#39;)<<(len-1-i)); } printf("%d",value);}复制代码要power也可以int power(int n){return 1<<n;}void main(){char str[]="10101110";int value=0;int len=strlen(str);for(int i=len-1;i>=0;i--){if(str[i]-&#39;0&#39;){ value+=power(len-1-i);}}printf("%d",value);}复制代码
2017-02-08 09:21:42
赞 6
槿年nnnn

槿年nnnn

回答数:207  |  被采纳数:16

55 (1) 还有其他更简单的么。。看不懂上面的程序。。指针没学到
2017-02-08 14:32:19
赞 20
樱yig

樱yig

回答数:154  |  被采纳数:95

2的N次方也就是1<<N,str[ i]-&#39;0&#39;可以把字符转成int类型的0或1,所以0(27) + 0(26) + 0(25) + 0(24) + 1(23) + 1(22) + 0(21) + 1(20)=0+0+0+0+1<<23+1<<22+0+1<<20
2017-02-08 12:15:43
赞 15
相关问答
最新其他问答
解决方法