本文共 816 字,大约阅读时间需要 2 分钟。
public void test6(){
/*使用循环分别实现将10进值整数和小数变成二进制数*/ /*转整数部分为二进制 * 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。 * 具体做法是:用2去除十进制整数,可以得到一个商和余数 * ;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止, * 然后把先得到的余数作为二进制数的低位有效位, * 后得到的余数作为二进制数的高位有效位,依次排列起来。 * * 10/2 =5 余数0 * 5/2=2 余数 1 * 2/2=1 0 * 1/2=0 1 * */ int num =5; String str=""; while(num/2!=0){ int yushu = num%2; str =yushu+str; //"0" +"1" num = num/2; } str = num+str; System.out.println(str); } @Test public void test7(){ /*转小数部分为2进制 * 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是: * 用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分, * 又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零, * 或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来, * 先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位 * */double d = 0.8125; // 1.625 1 double ji = d*2;
String str="0."; while((ji-(int)ji)!=0){ str = str+(int)ji; ji = (ji-(int)ji)*2; } str = str+(int)ji; System.out.println(str); }转载地址:http://jmjzb.baihongyu.com/