import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); System.out.println(decimalToBinary(num)); } public static String decimalToBinary(int decimal) throws IllegalArgumentException { if (decimal < 0) { throw new IllegalArgumentException("形参decimal不能为负数"); } else if (decimal == 0) { return "0"; } long remaining = decimal; //剩余变量,辅助完成计算k的二进制编码 //计算decimal的最高位数 int power = (int) (Math.log10(decimal) / Math.log10(2)); byte[] buf = new byte[power + 1]; //存储转化后的二进制数值 int binary = 1 << power; //计算最高项的值 int index = 0; //buf数组的存储索引 while (binary > 0) { //binary为0表示第0项已追加完毕 if (remaining >= binary) { buf[index++] = '1'; //将索引位置的元素值置为1 remaining -= binary; //继续转换剩余的十进制数 } else { buf[index++] = '0'; //索引值后移一位即可 } binary >>>= 1; //计算次位的值 } return new String(buf); //返回buf数组的字符串形式即可 } }