import java.util.Scanner; /** * Created by longforus on 9:10 PM 5/9/2016 . * IDEA-Test . * 输入10进制 输出二进制字符串 先计算该数包含最大的2次方结果 每减去一个该数 该位二进制 * 就记1 不够减就记0 a减完以后补全0 */ public class Chapter4_37 { public static void main (String[] args) { System.out.println ("Enter a Integer :"); Scanner in = new Scanner (System.in); int a = in.nextInt (); //System.out.println (Integer.toBinaryString (a));//在java中已有现成的方法实现 int i = 0; while (Math.pow (2, i) <= a) {//检测最大到2的多少次方 需要<=a 而不是<a 否则a==2^i 会出错 i++; } i--;//减小i到2^i<=a 的范围内 String binaryString = ""; while (i > =0) { if (a - Math.pow (2, i) >= 0) {//每减去一个2^i 就记1 a -= Math.pow (2, i); binaryString += 1; } else//不够减就记0 binaryString += 0; i--; if (a == 0) {//a减完后补全剩余的i+1个0 (包含2^0 ) 然后跳出循环 再计算已经没有意义 for (int j = 0; j <= i; j++) { binaryString += 0; } break; } } System.out.println (binaryString); } }
时间: 2024-10-07 14:19:10