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

 

寫在最后

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

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM