Java实现十进制数转化为二进制数的算法

时间:2022-06-11 11:09:53

十进制转换为二进制并输出,本文仅讨论整数部分

  方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一

直持续下去,直到商为0为止;最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
  下面举例:
  例:将十进制的168转换为二进制 
  得出结果 将十进制的168转换为二进制,(10101000)2 
  分析:

第一步,将168除以2,商84,余数为0。
  第二步,将商84除以2,商42余数为0。
  第三步,将商42除以2,商21余数为0。 
  第四步,将商21除以2,商10余数为1。 
  第五步,将商10除以2,商5余数为0。 
  第六步,将商5除以2,商2余数为1。 
  第七步,将商2除以2,商1余数为0。 
  第八步,将商1除以2,商0余数为1。 
  第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位;
  读数字从最后的余数向前读,即1010100;算法如下:


package binary;

import java.util.Scanner;

/**
* 十进制转换为2进制并输出
* @author Administrator
*
*/
public class IntegerToBinary
{
private static StringBuilder mode;//存放二进制结果

private int middle;//存放递归过程中的10进制数值

public IntegerToBinary()
{
mode=new StringBuilder();
middle=0;
}

public static void main(String[] args)
{
IntegerToBinary to=new IntegerToBinary();
Scanner scan=new Scanner(System.in);
while(scan.hasNextInt())
{
System.out.println(to.toBinaryString(scan.nextInt()));
mode.delete(0, mode.length());//清空StringBuilder
}

}

/**
* 返回10进制整数转换得到的2进制字符串
* 如整数5,得到二进制的"101"
* @param i 需要转换为2进制的10进制整数
* @return
*/
public String toBinaryString(int i)
{
this.toBinary(i);
return mode.toString();
}

/**
* 辗转相除,并对余数由最后得到1位余数向前进行拼接
* @param i
*/
public void toBinary(int i)
{
if(i>=1)
{
middle=i/2;
this.toBinary(middle);//递归
mode.append(i%2);
}
}

}