将二进制转换为十进制:栈实现
/**
* @Author RunXin
* @Date 2021/7/23 16:21
* @description 将字符串二进制转换为十进制数
*/
public class Binary2Des {
public static void main(String[] args) {
String a = "1111101";
binary2DesMethod(a);
}
public static int binary2DesMethod(String binary){
Stack<Integer> stack = new Stack<>();
char[] chars = binary.toCharArray();
// 构建一个栈
for (int i = 0; i < chars.length; i++) {
stack.push(Integer.valueOf(chars[i]) - 48);
}
int num = 0;
for (int i = 0; i < chars.length; i++) {
// 移位实现
// if(i==0){
// num = stack.pop() == 0 ? 0:1;
// }else{
// num = num + stack.pop() * (2 << (i-1));
// }
// Math.pow()方法底层是本地方法,那肯定比我移位好的啦
num = (int) (num + stack.pop() * Math.pow(2,i));
}
return num;
}
}