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