java获取整形int的二进制码(补码)的方法

java本身已经提供了获取整形int的二进制码的方法

Integer.toBinaryString(i)

但是如果该方法的入参i为正数,则获取到的二进制码前方不会有0,也就是长度不一定是32位。而负数因为首位符号位必定是1所以不会有这个问题。那么我们则需要针对正数的情况进行补0操作。以下是我补零的函数以及相应的测试代码,仅供参考:

public class Test {

    public static void main(String[] args) {
        System.out.println(getBinaryString(1));
        System.out.println(getBinaryString(-1));
        System.out.println(getBinaryString(8));
        System.out.println(getBinaryString(-8));
        System.out.println(getBinaryString(100));
        System.out.println(getBinaryString(1000));
        System.out.println(getBinaryString(Integer.MAX_VALUE));
        System.out.println(getBinaryString(Integer.MIN_VALUE));
    }

    /**
     * 0的二进制表达,32个0,作用为给正整数左边补零用
     */
    private static final String ZERO_STR = "00000000000000000000000000000000";

    /**
     * 获取整形num的二进制
     * @param num
     * @return
     */
    private static String getBinaryString(int num) {
        String s = Integer.toBinaryString(num);
        return ZERO_STR.substring(s.length()) + s;
    }

}

测试结果:

00000000000000000000000000000001
11111111111111111111111111111111
00000000000000000000000000001000
11111111111111111111111111111000
00000000000000000000000001100100
00000000000000000000001111101000
01111111111111111111111111111111
10000000000000000000000000000000

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍