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

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

维特丝(vetes)泡沫发蜡喷雾干胶定型弹力素羊毛卷男女保湿蓬松发胶 泡沫发蜡450ml+旅行装99ml
¥34.00
维特丝(vetes)一梳黑染发剂染发梳植物潮色显白遮盖白发自然清水纯黑发焗油男女梳炫彩 自然黑LW00
¥49.00
维特丝(vetes)染发笔遮白补染快速染发天然植物一次性染发棒 一次性染发棒黑色
¥46.00
维特丝 护发精油防毛躁清香玫瑰奇焕亮发干枯烫发卷发直发头发润发护发素男女士 滋养柔顺护发精油100ml
¥36.00