C语言:n=n*2+st2[i]-48

问题描述:

C语言:n=n*2+st2[i]-48
全部文件如下:
int i,n; char st2[50]; n=0; printf("输入一个二进制数:\n"); gets(st2); for(i=0;st2[i]!=0;i++) n=n*2+st2[i]-48; printf("%d\n",n);
1个回答 分类:综合 2014-11-30

问题解答:

我来补答
把 用字符串形式 输入的 2进制数,化成10进制数值,并按 10 进制 输出.
n=n*2+st2[i]-48; 可以看成 n=n*2+ (st2[i]-48);
st2[i]-48 就是把 str2[i] 这个字符 的 ASCII 码值,化成 算术值.
因为 字符 '0' 的编码 是 48,字符 '1' 的编码 是 49,
st2[i]-48 就变成了 0 或 1,看你 输入的 某位上的 字符 是 '0' 还是 '1'.
n*2 就是 把 数值 n 乘 2.
for(i=0;st2[i]!=0;i++) 里的 !0 就是 一个字符一个字符地处理,直到遇见 字符串结束符.
例如输入 111.
i=0; st2[i]=='1'; n = '1'-48 = 1;
i=1; st2[i]=='1'; n = 1 * 2 + ('1'-48) = 2+ 1 = 3;
i=2; st2[i]=='1'; n = 3 * 2 + ('1'-48) = 6+ 1 = 7;
printf("%d\n",n); 输出 7.
 
 
展开全文阅读
剩余:2000
上一页:hfftbjhg