java实现十进制整数或小数转换成二进制

来源:互联网 发布:苹果手机模拟器mac版 编辑:程序博客网 时间:2024/05/18 22:40

1. 十进制整数

思路: 整数除以2,每次将余数保存起来,商循环除以2,直到商为0为止,然后将所有余数逆序打印出来。

例子:

23/2  商: 11  余数: 1
11/2  商: 5   余数: 1
5/2    商: 2   余数: 1
2/2    商: 1   余数: 0
1/2    商: 0   余数: 1

代码实现:

public StringBuilder intToBinary(int deci) throws Exception{    StringBuilder binary = new StringBuilder();    while(in!=0){        int quotient=in/2;  //商        int remender=in%2;  //余数        binary.append(remender);        in=quotient;    }    return binary.reverse();}public static void main(String[] args){    try {        DecimalToBinary t = new DecimalToBinary();        System.out.println(t.intToBinary(23));    }catch (Exception e){        e.printStackTrace();    }}
Output: 10111

2. 十进制小数

思路: 小数乘以2,每次乘完取整(1或者0)放到数组中,然后将剩余小数部分继续乘以2,直到小数部分为0或者达到所要求的精度为止,再讲所有余数按顺序打印出来。

例子:

0.813*2   整数部分: 1  小数部分: 0.626
0.626*2   整数部分: 1  小数部分: 0.252
0.252*2   整数部分: 0  小数部分: 0.504
0.504*2   整数部分: 1  小数部分: 0.008
0.008*2   整数部分: 0  小数部分: 0.016

代码实现:

public StringBuilder doubleToBinary(double d) throws Exception{    return doubleToBinary(d,4);//利用方法重装实现默认参数}public StringBuilder doubleToBinary(double d,int count) throws Exception{    if (count>32){        throw new Exception("The max bit must less than 32!");    }    if(count==0){        throw new Exception("The min bit must bigger than 0");    }    double multi=0; //每次的乘积    StringBuilder res=new StringBuilder();    while(count>=0){        multi=d*2;        if(multi>=1){            res.append(1);            d=multi-1;        }        else{            res.append(0);            d=multi;        }        count--;    }    return res;}

3. 十进制整数和小数

思路: 整数和小数分别转换,然后将两个数组以小数点为分割分别打印出来。
例子:

代码实现:

public StringBuilder allToBinary(double deci) throws Exception {    int in=(int)deci;  //取整数部分    double d= deci - in;  //小数部分    StringBuilder total = new StringBuilder();    total.append(intToBinary(in));    total.append(".");    total.append(doubleToBinary(d));    return total;}

4. 测试:

public static void main(String[] args){    try {        DecimalToBinary t = new DecimalToBinary();        System.out.println(t.intToBinary(23));        System.out.println("0."+t.doubleToBinary(0.23));        System.out.println(t.allToBinary(23.23));    }catch (Exception e){        e.printStackTrace();    }
输出:

10111
0.00111
10111.00111


阅读全文
0 0
原创粉丝点击