将正整数转换为二进制数

 1 import java.io.*;
 2 
 3 /*
 4  * 问题描述:将正整数N(N>=1)转换成二进制数
 5  * 例  11 = 1* 2^3 + 0* 2^2 + 1* 2^1 + 1
 6  */
 7 
 8 public class Decimal2Binary {
 9 
10     // 这里初始的"1"表示二进制1、0串中始终存在的最高位的1
11     private static String str = "1";
12 
13     // 递归地判断最后一位是1还是0,然后右移一位
14     private static void conv(int n) {
15         if (n == 1)                 //    已经达到最高位
16             return;
17         else if (n % 2 == 0) {      //  当前2^0项是1还是0
18             conv(n / 2);            //  先递归算2^1项,
19             str += "0";             //  再将2^0项的0、1值加在2^1项后面
20         } else {
21             conv(n / 2);
22             str += "1";
23         }
24     }
25     
26     public static String convert(int n){
27         conv(n);
28         return str;
29     }
30 
31     public static void main(String[] args) throws NumberFormatException,
32             IOException {
33         System.out.println(Decimal2Binary.convert(11));
34     }
35 }

 

posted @ 2013-12-02 19:30  XIAOSHUA  阅读(1282)  评论(0编辑  收藏  举报