这个程序怎么理解啊!请教高手

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:51:42
#include<conio.h>
void main()
{
int dec=0;
char ch;
do
{ ch=getche();}
while(ch!='0'&&ch!='1');
do
{ dec+=ch-'0';
ch=getche();
if(ch=='0'||ch=='1')
dec*=2;
}while(ch=='0'||ch=='1');
cprintf("\ndec=%d\n",dec);
}
这是一个二进制转化为十进制的一个程序,可是我不大理解!
希望有位程序高手整个帮我解释下~谢谢啊!!

do
{ ch=getche();}
while(ch!='0'&&ch!='1');

开始就判断,必须以0或者1开始。

然后
dec += ch-'0',就是算出来数值上的0,或者1, 这个是最末一位

然后继续输入
ch=getche();

如果又输入了1,或者0,当前这个就要左移乘2
以此类推

比如
你输入了1

然后再输入0
实际上相当于输入了10,所以先输入的1要左移