十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以得到结果。但如果转换的不是一个整数,而是一个带小数部分的十进制数,那就没有那么容易了。由于整数和小数的转换方式不同,所以先将十进制数的整数部分和小数部分分别转换后,再合并转换后的结果即得到想要的结果。

十进制数转二进制数的算法如下:
        1. 十进制整数转换为二进制整数  
         十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
        2.十进制小数转换为二进制小数  
          十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

下面就给出根据十进制数转二进制数的算法所写的一段Java程序以供大家参考:(输入一个十进制数将其转换成二进制)


import java.math.BigDecimal;
import java.util.Scanner;public class JZchange {public static void main(String[] args) {JZchange t = new JZchange();Scanner input=new Scanner(System.in);System.out.println("Please input d:"); double d=input.nextDouble();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; i>0; 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();}
}

运行结果:

Please input d:
1234.5
十进制数1234.5转成二进制数为:0100 1101 0010.1000

java十进制转二进制(输入一个十进制数将其转换成二进制)相关推荐

  1. java十进制输出_JAVA输入一个十进制数N,输出r进制的数

    \\引入包 import java.util.Scanner; import java.util.Stack; public class Change { public static void mai ...

  2. php讲图片转换成二进制,如何把php中的图片转换成二进制

    如何把php中的图片转换成二进制 发布时间:2020-07-08 15:58:46 来源:亿速云 阅读:110 作者:Leah 本篇文章给大家分享的是有关如何把php中的图片转换成二进制,小编觉得挺实 ...

  3. 从键盘输入一个大写字母,然后转换成小写字母输出。

    #include<stdio.h> void main() {char ch1,ch2; printf("请输入一个大写字母:"): ch1=getchar(); ch ...

  4. java二进制保存图片_Java中如何把图片转换成二进制流

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.将Image图像文件存入到数据库中 我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存 ...

  5. 输入一个秒数将其转换成天时分秒

    #include<stdio.h>#define Day_Seconds 86400#define Hour_Seconds 3600#define Min_Seconds 60int m ...

  6. 实现输入一个十进制正整数转换为二进制输出

    package com.study;import java.util.Scanner;/** 输入一个十进制正整数转换为二进制*/ public class Conversion {public st ...

  7. Java黑皮书课后题第5章:**5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值(不要使用Integer.toBinaryString(int)方法)

    5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.37(十进制转二进制)编写程序,提示用户输入一个十进制 ...

  8. 输入一个十进制数,转化为二进制

    1.代码如下: // test.cpp : Defines the entry point for the console application. // /* 输入一个十进制数,转化为二进制.*/ ...

  9. 十进制转二进制 java 程序_如何把一个十进制数转为二进制数的Java程序?

    展开全部 十进制数转二进制分2部分,整数和小数部分. 1.整数部分 十进制整数转换为二进制整数采用62616964757a686964616fe59b9ee7ad9431333337616533&qu ...

最新文章

  1. SmartNIC/DPU — 主流厂商
  2. 软件工程:需求分析的20条法则
  3. OpenStack 存储服务 Cinder存储节点部署NFS(十七)
  4. 那年大一在图书馆作死的大学高数笔记 | 导数和微分
  5. c语言数组转置原理,为什么这个数组转置不对?
  6. sqlite 模糊匹配日期_SQLite模糊查找(like) | 学步园
  7. 使用BULK COLLECT+FORALL加速批量提交
  8. python 的csr_Python scipy.sparse.csr_matrix()[csc_matrix()]
  9. DSPE-PEG-Hydroxyl DSPE-PEG-OH 磷脂-聚乙二醇-羟基概述
  10. C#简单使用ManagedWifi
  11. Excel技巧—两招轻松搞定汉字转拼音
  12. node文件通过不同的后缀名解析不同的文件类型
  13. 重庆万豪行政公寓:经典焕新,传奇永续
  14. 查看计算机屏幕颜色软件,电脑屏幕的颜色的红绿蓝值如何查看?
  15. delphi 实现虚拟打印, 远程集中打印
  16. 瑞·达利欧的《原则》读后感
  17. 玲珑oj 1032 (容斥原理或前缀和优化dp)
  18. kaldi运行cvte开源chain模型
  19. java bufferedread_java中关于bufferedreader类中read方法
  20. 2023中国民航大学计算机考研信息汇总

热门文章

  1. 50万粉丝单场带货破200万!这些快手美妆黑马主播是如何在双十一前夕涨粉又爆单的?
  2. 战火与秩序迁城显示服务器忙,战火与秩序怎么玩(战火与秩序怎么迁城到联盟攻略解读)...
  3. 2023第八届少儿模特明星盛典 福州赛区 初赛圆满收官
  4. office365 onedrive 教育版市场价位分析选购指南
  5. 下载文件plus.downloader.createDownload
  6. Cisco WSA配置
  7. 京东JD App签名/加密算法研究
  8. yolov5的混淆矩阵
  9. 低代码助力制造型企业——工时管理系统
  10. 2万 字的 Spring Cloud 总结,从此任何问题也难不住你