Java中十进制数转二进制数的方法.doc_第1页
Java中十进制数转二进制数的方法.doc_第2页
Java中十进制数转二进制数的方法.doc_第3页
Java中十进制数转二进制数的方法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

import java.util.Stack;public class Test public static void main(String args) System.out.println(toBinary(32); /第一种 String string = Integer.toBinaryString(32);/第二种 System.out.println(string); public static String toBinary(int a) String str = ; Stack s = new Stack(); while (a != 0) s.push(a % 2); a = a / 2; while (!s.empty() str += s.pop(); return str; 十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以得到结果。但如果转换的不是一个整数,而是一个带小数部分的十进制数,那就没有那么容易了。由于整数和小数的转换方式不同,所以先将十进制数的整数部分和小数部分分别转换后,再合并转换后的结果即得到想要的结果。 十进制数转二进制数的算法如下: 1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用除2取余,逆序排列法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 2十进制小数转换为二进制小数 十进制小数转换成二进制小数采用乘2取整,顺序排列法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 下面就给出根据十进制数转二进制数的算法所写的一段Java程序以供大家参考:1.import java.math.BigDecimal;2.3.public class Test 4.5. public static void main(String args) 6. Test t = new Test();7. double d = 8;8. String s = t.decimal2BinaryStr(d);9. System.out.println(十进制数+d+转成二进制数为:+s);10. 11.12. /*13. * 十进制数转二进制数14. * param d 十进制数15. * return 十进制数转换成二进制的字符串16. */17. public String decimal2BinaryStr(double d)18. String result = decimal2BinaryStr_Inte(d);19. result += decimal2BinaryStr_Deci(d);20. return result;21. 22. 23. /*24. * 十进制整数部分转二进制数25. * param d 十进制数26. * return 十进制整数部分转换成二进制的字符串27. */28. public String decimal2BinaryStr_Inte(double d)29./ return Integer.toBinaryString(int)d); 30. /*31. * 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,32. * 但为了展示十进制转二进制的算法,现选择以下程序来进行转换33. */34. String result = ;35. long inte = (long)d;36. int index = 0;37. while(true)38. result += inte%2;39. inte = inte/2;40. index+;41. if(index%4 = 0)42. result+= ;43. 44. if(inte=0)45. while(index%4!=0)46. result+=0;47. index+;48. 49. break;50. 51. 52. char c = result.toCharArray();53. char cc = new charc.length; 54. for(int i=c.length; i0; i-)55. cccc.length-i = ci-1;56. 57. return new String(cc);58. 59. 60. /*61. * 十进制小数部分转二进制62. * param d 十进制数63. * return 十进制小数部分转换成二进制小数的字符串64. */65. public String decimal2BinaryStr_Deci(double d)66. return decimal2BinaryStr_Deci(d, 0);67. 68. 69. /*70. * 十进制小数部分转二进制71. * param d 十进制数72. * param scale 小数部分精确的位数73. * return 十进制小数部分转换成二进制小数的字符串74. */75. public String decimal2BinaryStr_Deci(double d, int scale)76. double deci = sub(d,(long)d);77. if(deci=0)78. return ;79. 80. /为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度81. if(scale=0)82. scale = (String.valueOf(deci).length()-2)*4;83. 84. int index = 0;85. StringBuilder inteStr = new StringBuilder();86. double tempD = 0.d;87. while(true)88. if(deci=0 | index=scale)89. while(index%4!=0)90. inteStr.append(0);91. index+;92. 93. break;94. 95. if(index=0)96. inteStr.append(.); 97. 98. tempD = deci*2;99. inteStr.append(int)tempD);100. deci = sub(tempD ,(int)tempD);101. index+;102. if(index%4 = 0)103. inteStr.append( );104. 105. 106. return inteStr.toString();107. 108. 109. 110. /*111. * 提供精确的减法运算。112. * param v1 被减数113. * param v2 减数114. * return 两个参数的差115. */116. public static double sub(double v1, double v2) 117. BigDecimal b1 = new BigDecimal(Double.toString(v1);118. BigDecimal b2 = new BigDecimal(Double.toString(v2);1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论