Java - 输出二进制数字

输出二进制数字, 标准库函数: Integer.toBinaryString().
简易实现方式:

//: Main.java

/**
 * 二进制数打印
 */

class MyClass {
    // 替代Integer.toBinaryString()
    public static String toBinaryString(int num) {
        if (num == 0) return ""+0;
        String result = "";
        // 左面0的个数
        int n = Integer.numberOfLeadingZeros(num);
        num <<= n;
        for (int i=0; i<32-n; ++i) {
            int x = (Integer.numberOfLeadingZeros(num) == 0)?1:0;
            result += x;
            num <<= 1;
        }
        return result;
    }
}

class Main {
    public static void main(String[] args) {
        int i1 = Integer.valueOf("10101010", 2);
        int i2 = Integer.valueOf("10101011",2);
        System.out.println("i1 = " + i1 + ", (2)" + MyClass.toBinaryString(i1));
        System.out.println("i2 = " + i2 + ", (2)" + MyClass.toBinaryString(i2));
        System.out.println("i1|i2 = " + (i1|i2) + ", (2)" + MyClass.toBinaryString((i1 | i2)));
        System.out.println("i1^i2 = " + (i1 ^ i2) + ", (2)" + MyClass.toBinaryString((i1 ^ i2)));
        System.out.println("i1&i2 = " + (i1&i2) + ", (2)" + MyClass.toBinaryString((i1 & i2)));
        System.out.println("~i1 = " + (~i1) + ", (2)" + MyClass.toBinaryString((~i1)));
    }
}
/**
 * Output:
 * i1 = 170, (2)10101010
 * i2 = 171, (2)10101011
 * i1|i2 = 171, (2)10101011
 * i1^i2 = 1, (2)1
 * i1&i2 = 170, (2)10101010
 * ~i1 = -171, (2)11111111111111111111111101010101
 *///:~


版权声明:本文为u012515223原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。