for(i = 0; bitstr[i] != '\0'; i++){
if(!(bitstr[i]=='0' || bitstr[i]=='1')){
printf("Not a valid bitstring!");
exit(0);
}
else{
sum = sum*2+bitstr[i];
}
}
printf("%d", sum);
例如,当我输入101时,它会打印339,而它应该打印5作为答案。我不知道我做错了什么。任何帮助都将不胜感激。
最佳答案
这是因为'1'
和'0'
是字符'1'
和'0'
,而不是整数值。您需要从中减去'0'
以获得数值:
sum = sum*2+(bitstr[i]-'0');