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