Java 输出整数的二进制讲解

来源:互联网 发布:linux qq安装教程 编辑:程序博客网 时间:2024/05/29 18:46

实现方式如上。本次就以 输出整数9的二进制为例。

思路:计算出左边0的个数,然后将1001移到最高位,然后从高位到低位依次算出值(大白话:想办法把1001用程序打印出来),具体怎么实现看实现程序。


上图是32位 9的二进制,int n =Integer.numberOfLeadingZeros(num)计算出1的左边0的个数,如图我已经标注出来的28,

int x = (Integer.numberOfLeadingZeros(num)==0)?1:0;这句话的意思是最高位的左边如果不是0,非零即1,如此可推算出算出最高位的值了。

左移一位反复推算出所有的值。

实现代码:

public class OutBinary { public static void main(String[] args) {   System.out.println(toBinaryString(1)); }    public static String toBinaryString(int num) {        if (num == 0) return ""+0;        String result = "";        // 左面0的个数        int n = Integer.numberOfLeadingZeros(num);        System.out.println("num <<= n"+(num <<= n));        for (int i=0; i<32-n; ++i) {            int x = (Integer.numberOfLeadingZeros(num) == 0)?1:0;            result += x;            num <<= 1;        }        return result;   }}