懒得解释算法本身了,要打太多字了,基本数学思想参考下链:
网页链接
只讲一下*a-'0'这里是把字符转成数字,因为数字字符的ascii码值是连续,即'0'-'0'==0,'1'-'0'==1,'2'-'0'==2,...以此类推
不理解的话,代一组二进制值进去,比如"1010",一步步执行下就懂了
2进制转十进制就是该位乘以2的对应次的幂然后想加,比如1010就是1*2的3次+1*2的1次=10。
一个数字字符转为对应的数字就是用它减去'0'.所以举个例子,"1010",从最左边一个字符一个字符提出来,那么先是1,然后1*2+0=2,2*2+1=5,5*2+0=10.可见最高位乘了3次2也就是2³,接下来每位依次少乘了2,就可以转为10进制的10了。
你问的我都不懂