2进制转10进制,10进制转2进制
//2进制转10进制: 按权相加 public static double binary2decimal(String binaryStr) { String[] binaryArr = binaryStr.split("\\."); String integer = binaryArr[0];// 整数部分 double decimal = 0; int j = 0; for(int i = integer.length()-1; i >=0; i--){ decimal += (integer.charAt(i) - '0') * Math.pow(2,j++); } if(binaryArr.length > 1){ //小数部分 String fraction = binaryArr[1];// 小数部分 int k = 0; for(int i = 0; i < fraction.length(); i++){ decimal += (fraction.charAt(i) - '0') * Math.pow(2,--k); } } return decimal; } //10进制转2进制,有整数和小数的。 public static String decimal2binary(double decimal) { long integer = Math.round(Math.floor(decimal));// 整数部分 decimal -= integer; //小数部分 String binary = ""; //先算整数部分: 除以2取余,逆序输出 do{ binary = integer%2 + binary; //余数 integer /= 2; //整除的结果 } while(integer > 0); //小数点 binary += "."; //在算小数部分: 乘以2取整,顺序输出 do{ decimal *= 2; integer = Math.round(Math.floor(decimal)); //整数部分 decimal -= integer; //小数部分 binary += integer; }while (decimal > 0); return binary; }