对于该算法的实现,可以考虑for循环对字符串进行遍历,对每一位字符依次处理,以下是从左往右的遍历字符串的代码示例
public static int binaryToDecimal(String binaryNumber) {
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
char bit = binaryNumber.charAt(i);
decimalNumber = decimalNumber * 2 + (bit - '0');
}
return decimalNumber;
}
对于 decimalNumber = decimalNumber * 2 + (bit - ‘0’); 是指将已经得到的值对应的二进制进行右移一位,同时加上新遍历的一位的字符值,以此类推。
以二进制字符串101为例:
第一次遍历,decimalNumber=0,一次for循环后得到的decimalNumber为1,即1对应的十进制的值。
第二次遍历,先执行decimalNumber2,即将decimalNumber对应的二进制值右移-位。因此,此时decimalNumber对应的二进制值变为10。再加上新遍历字符的值,故第二次循环后decimalNumber值为2,对应的二进制为10。
第三次遍历,先执行decimalNumber2,即将decimalNumber二进制形式右移一位,此时decimalNumber的值为4,对应的二进制为100,再加上新循环的字符的值,此时该值为1,因此第三遍循环结束后,decimalNumber的值为5,对应的二进制为101。