java十进制小数转二进制

xiaoxiao2021-02-28  46

1. 十进制整数

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

例子:

23/2  商: 11  余数: 111/2  商: 5   余数: 15/2    商: 2   余数: 12/2    商: 1   余数: 01/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.6260.626*2   整数部分: 1  小数部分: 0.2520.252*2   整数部分: 0  小数部分: 0.5040.504*2   整数部分: 1  小数部分: 0.0080.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(); } 输出:

101110.0011110111.00111

转载请注明原文地址: https://www.6miu.com/read-2632141.html

最新回复(0)