java 二进制与十进制互相转换(支持负数)

1.情景展示

java二进制如何转成十进制?

十进制如何转换成二进制?

2.具体分析

二进制:用0和1表示(最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小);

十进制:10个阿拉伯数字(0~9)共计10个数字表示。

3.解决方案

二进制转十进制

/*
 * 二进制转十进制(支持用负数表示的二进制)
 * @description:
 * @date: 2022/4/1 14:47
 * @param: binary 二进制
 * @return: java.lang.Integer 十进制
 */
@Nullable
public static Integer toDecimal(String binary) {
    if (StringUtils.isEmpty(binary)) return null;

    int i = new BigInteger(binary, 2).intValue();
    // 如果int不够用(>32位),可以换成long(64位)
    // Long l = new BigInteger(binary, 2).longValue();
    log.debug("二进制转十进制:\n{}", i);

    return i;
}

十进制转二进制

/*
     * 十进制转二进制
     * @description:
     * 1.所谓原码就是二进制定点表示法,即:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
     * 2.反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
     * 3.补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
     * int:在java当中的存储范围是32位;
     * long:在java当中的存储范围是64位;
     * byte 1个字节
     * short 2个字节
     * int 4个字节
     * long 8个字节
     * @date: 2022/4/1 14:40
     * @param: i
     * 如果你的number是正整数,则会自动转化为普通的原码;
     * 若是number是负数,则会转化为补码。
     * @return: java.lang.String
     */
    @NotNull
    public static String fromDecimal(Integer i) {
        if (i == null) return "";

        String binaryString = Integer.toBinaryString(i);
        // 如果int不够用(>32位),可以换成long(64位)
        // String binaryString = Long.toBinaryString(i);
        log.debug("十进制转二进制:\n{}", binaryString);

        return binaryString;
    }

测试

toDecimal(fromDecimal(-115));

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2022-04-06 09:11  Marydon  阅读(1601)  评论(0编辑  收藏  举报