只能说这个工具类太常用了,本人经常需要对比两个数字的二进制形式,jdk自带的方法又会把前面为零的那一部分给截掉,不方便比较,所以粘贴此类出来作为备忘
/**
* 该类是一个将int型整数转成32位二进制字符串形式的工具类
* Created by lihong10 on 2017/4/28.
*/
public class Int2BinaryStringUtil {
private final static char[] digits = {'0', '1'};
/**
* 将int型整数转成32位的2进制形式
* @param num
* @return String
*/
public static String toFullBinaryString(int num)
{
char[] buf = new char[32];
int pos = 32;
int mask = 1;
do
{
buf[--pos] = digits[num & mask];
num >>>= 1;
}
while (pos > 0);
return new String(buf, pos, 32);
}
/**
* 将int型整数转成32位的2进制形式
* @param num
* @return String
*/
public static String toFullBinaryString2(int num)
{
char[] chs = new char[Integer.SIZE];
for (int i = 0; i < Integer.SIZE; i++)
{
chs[Integer.SIZE - 1 - i] = (char) ((num >> i & 1) + '0');
}
return new String(chs);
}
/**
* 测试
* @param args
*/
public static void main(String[] args)
{
System.out.println("方法一:" + toFullBinaryString(6053));
System.out.println("JDK自带: " + Integer.toBinaryString(6053));
System.out.println("方法一:" + toFullBinaryString(-2));
System.out.println("JDK自带: " + Integer.toBinaryString(-2));
System.out.println("------------------------------------------");
System.out.println("方法二:" + toFullBinaryString2(6053));
System.out.println("JDK自带: " + Integer.toBinaryString(6053));
System.out.println("方法二:" + toFullBinaryString2(-2));
System.out.println("JDK自带: " + Integer.toBinaryString(-2));
}
}