package Recursive;
import java.util.Scanner;
public class Exercise18_23 {
public static void main(String[] args) {
System.out.print("Enter a binary string: ");
StringBuffer binaryString = new StringBuffer(new Scanner(System.in).nextLine());
System.out.println("The decimal of binary string " + binaryString + " is " + bin2Dec(binaryString.reverse().toString()));
}
/** 返回二进制串的十进制表示 */
public static int bin2Dec(String binaryString) {
int decimal = binaryString.charAt(binaryString.length() - 1) == '1' ? (int)Math.pow(2, binaryString.length()-1) : 0;
return (binaryString.length() == 1) ? decimal :
decimal + bin2Dec(binaryString.substring(0, binaryString.length()-1));
}
}
package revision;
/**
* @create: 2023/10/25
* @Description:
* @FileName: Main
*/
public class Main {
public static void main(String[] args) {
for (int i = 65535; i >= 0; i--) {
if (bin2Dec(Integer.toBinaryString(i)) != i) {
System.out.println("Not equal at " + i);
break;
}
}
}
/** 二进制转十进制 */
public static int bin2Dec(String binaryString) {
return bin2Dec(binaryString, binaryString.length() - 1);
}
/** 二进制转十进制辅助方法 */
public static int bin2Dec(String bs, int high) {
int dec = bs.charAt(high) == '0' ? 0 :
(int) Math.pow(2, bs.length() - high - 1);
return 0 == high ? dec : dec + bin2Dec(bs, high - 1);
}
}