重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下面是根据十进制数转二进制数的算法所写的一段Java程序示例代码:
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站制作、做网站、赤城网络推广、小程序制作、赤城网络营销、赤城企业策划、赤城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供赤城建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十进制数"+d+"转成二进制数为:"+s);
}
/**
* 十进制数转二进制数
* @param d 十进制数
* @return 十进制数转换成二进制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十进制整数部分转二进制数
* @param d 十进制数
* @return 十进制整数部分转换成二进制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// return Integer.toBinaryString((int)d);
/*
* 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,
* 但为了展示十进制转二进制的算法,现选择以下程序来进行转换
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true){
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0){
result+=" ";
}
if(inte==0){
while(index%4!=0){
result+="0";
index++;
}
break;
}
}
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i0; i--){
cc[cc.length-i] = c[i-1];
}
return new String(cc);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @param scale 小数部分精确的位数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度
if(scale==0){
scale = (String.valueOf(deci).length()-2)*4;
}
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true){
if(deci==0 || index==scale){
while(index%4!=0){
inteStr.append("0");
index++;
}
break;
}
if(index==0){
inteStr.append(".");
}
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0){
inteStr.append(" ");
}
}
return inteStr.toString();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
}
例如将十进制数1234.5转成二进制数为:0100 1101 0010.1000
import java.util.Stack;
/**
* author: liu jun bao
* date: 2020/2/28
* desc:
*/
public class Test {
public static void main(String[] args) {
Integer a = 300;
Integer b = 8;
BinaryConversion(a, b);
}
/**
*
* @param a 要转化的十进制数
* @param b 要转化的进制
* 该方法输出转化结果
*/
private static void BinaryConversion(Integer a, Integer b) {
Stack stack = new Stack();
while (a != 0){
stack.push(a%b);
a=a/b;
}
while (!stack.empty()){
System.out.print(stack.pop());
}
}
}
java实现:整数进制相互转换的方法:
十进制转为二进制、八进制、十六进制, 用 Integer.toXXXString()方法
(1)十进制转为二进制: Integer.toBinaryString(int i);
public static String toBinaryString(int i):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
(2)十进制转为8进制 :Integer.toOctalString(int i);
public static String toOctalString(int i):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
(3)十进制转为16进制: Integer.toHexString(int i);
public static String toHexString(int i):以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
举例:
String bin = Integer.toBinaryString(10);
String oct = Integer.toOctalString(10);
String hex = Integer.toHexString(10);
2.十六进制、八进制、二进制转为十进制(有两种方法):parseInt() 和valueOf()。
Integer.parseInt(String s,int radix);
public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二个参数作为指定的基数,将字符串参数解析为有符号的整数;
Integer.valueOf(String s,int radix);
public static Integer valueOf(String s, int radix) throws NumberFormatException{}返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
举例:
try{
int i = Integer.parseInt("a", 16);
//输出为10进制数10
System.out.println(i);
}catch (Exception e){
e.printStackTrace();
}
try{
//十六进制转成十进制
String hex = Integer.valueOf("FFFF",16).toString();
System.out.println(hex);
//八进制转成十进制
String oct = Integer.valueOf("12",8).toString();
System.out.println(oct);
//二进制转十进制
String bin = Integer.valueOf("0101",2).toString();
System.out.println(bin);
}catch (Exception e){
e.printStackTrace();
}
下面是转换的方法
int
n1
=
14;
//十进制转成十六进制:
Integer.toHexString(n1);
//十进制转成八进制
Integer.toOctalString(n1);
//十进制转成二进制
Integer.toBinaryString(12);
//十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
//十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));
//八进制转成十进制
Integer.valueOf("576",8).toString();
//八进制转成二进制
Integer.toBinaryString(Integer.valueOf("23",8));
//八进制转成十六进制
Integer.toHexString(Integer.valueOf("23",8));
//二进制转十进制
Integer.valueOf("0101",2).toString();
//二进制转八进制
Integer.toOctalString(Integer.parseInt("0101",
2));
//二进制转十六进制
Integer.toHexString(Integer.parseInt("0101",
2));
Java中的进制转换是通过基本数据类型类中的相应方法实现的。举个例子:
public class IntegerChange {
public static void main(String[] args) {
String nm = new String("445");
int n = Integer.parseInt(nm);
System.out.println("十进制表示:" + n);
System.out.println("二进制表示:" + Integer.toBinaryString(n));
System.out.println("八进制表示:" + Integer.toOctalString(n));
System.out.println("十六进制表示:" + Integer.toHexString(n));
}
}
输出结果:
十进制表示:445
二进制表示:110111101
八进制表示:675
十六进制表示:1bd
至于八进制转换为十进制,十六进制,二进制等等都有相应的方法,具体的可以查看Java帮助文档。
希望对你有所帮助。