1. 程式人生 > 其它 >java 二進位制與十進位制互相轉換(支援負數)

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));

 

寫在最後

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦: