概述
1. 十进制整数
思路: 整数除以2,每次将余数保存起来,商循环除以2,直到商为0为止,然后将所有余数逆序打印出来。
例子:
23/2 商: 11 余数: 1
11/2 商: 5 余数: 1
5/2 商: 2 余数: 1
2/2 商: 1 余数: 0
1/2 商: 0 余数: 1
代码实现:
publicStringBuilder intToBinary(intdeci) throwsException{StringBuilder binary = newStringBuilder();while(in!=0){
intquotient=in/2; //商intremender=in%2; //余数binary.append(remender);in=quotient;}
returnbinary.reverse();}
public static voidmain(String[] args){
try{
DecimalToBinary t = newDecimalToBinary();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
代码实现:
publicStringBuilder doubleToBinary(doubled) throwsException{
returndoubleToBinary(d,4);//利用方法重装实现默认参数}
publicStringBuilder doubleToBinary(doubled,intcount) throwsException{
if(count>32){
throw newException("The max bit must less than 32!");}
if(count==0){
throw newException("The min bit must bigger than 0");}
doublemulti=0;//每次的乘积StringBuilder res=newStringBuilder();while(count>=0){
multi=d*2;if(multi>=1){
res.append(1);d=multi-1;}
else{
res.append(0);d=multi;}
count--;}
returnres;}
3. 十进制整数和小数
思路: 整数和小数分别转换,然后将两个数组以小数点为分割分别打印出来。
例子:
代码实现:
publicStringBuilder allToBinary(doubledeci) throwsException {
intin=(int)deci;//取整数部分doubled= deci - in;//小数部分StringBuilder total = newStringBuilder();total.append(intToBinary(in));total.append(".");total.append(doubleToBinary(d));returntotal;}
4. 测试:
public static voidmain(String[] args){
try{
DecimalToBinary t = newDecimalToBinary();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
最后
以上就是愉快小笼包为你收集整理的java小数转二进制_java十进制小数转二进制的全部内容,希望文章能够帮你解决java小数转二进制_java十进制小数转二进制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复