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