java 二進位制與十進位制互相轉換(支援負數)
阿新 • • 發佈:2022-04-06
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));
寫在最後
哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!