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

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










}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值