32位整数转二进制字符串算法

来源:互联网 发布:韶关市网络问政门户 编辑:程序博客网 时间:2024/05/29 03:21

只能说这个工具类太常用了,本人经常需要对比两个数字的二进制形式,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));    }}
0 0