手把手教你JAVA進制之間的轉(zhuǎn)換
1.前言
進制也就是進位計數(shù)制,是人為定義的帶進位的計數(shù)方法,類似于統(tǒng)計”正”字,對于任何一種進制,X進制,就表示每一位置上的數(shù)運算時都是逢X進一
10進制 : 逢十進一,包含元素 0~9
16進制 : 逢十六進一,包含元素 0~9 a b c d e f
2 進制 : 逢二進一,包含 0 和 1
通常情況下: 1byte = 8個二進制位
表示一個數(shù)字如果用二進制來表示的話,可以寫成: 0000 1111
把這8個位進行組合,每3位組合就形成了8進制
每4位組合就形成了16進制
2.不同進制的特點
2進制 : 逢二進一 , 包含 0和1 , 以0b開頭
8進制 : 逢八進一 , 包含 0~7 , 以0開頭
10進制 : 逢十進一 , 包含元素 0~9
16進制 : 逢十六進一 ,包含元素 0~9 a b c d e f ,以0x開頭
3.進制之間的轉(zhuǎn)換
關(guān)于二進制的一些數(shù)據(jù)

3.1 二進制轉(zhuǎn)十進制:
需求:計算二進制數(shù)據(jù):0000 1101 對應(yīng)的十進制

3.2 十進制轉(zhuǎn)二進制:
需求:求十進制數(shù)字11對應(yīng)的二進制數(shù)
簡便算法: 11 先拆分成2的次冪元素組成的數(shù), (8+2+1) 然后對應(yīng)位置改成二進制 0000 1011算式計算:不斷除以2商0為止,取余,倒著寫,11的結(jié)果:1011
7的結(jié)果0111(讀的時候先朝右,再朝上的方向讀)

3.3 二進制轉(zhuǎn)八進制:
從低次位開始,每3位為一組,產(chǎn)生一個八進制數(shù)字,最高位不足補0
需求:計算二進制數(shù)據(jù)110 0111對應(yīng)的八進制

需求:計算八進制數(shù)據(jù)023 0653對應(yīng)的二進制數(shù)據(jù)

3.4 十六進制轉(zhuǎn)二進制:
一個數(shù)字拆分成4個數(shù)字
舉例:b->11對應(yīng)的二進制數(shù)1011
3.5 二進制轉(zhuǎn)十六進制:
四個一組,轉(zhuǎn)為一個數(shù)字,以0x開始
舉例: 1111->15 ,a在16進制代表的是10,依次類推,15對應(yīng)的16進制數(shù)就是f
4. 代碼實現(xiàn)二進制與十進制互轉(zhuǎn)
java 中也提供了二進制和十進制的互轉(zhuǎn)方法:
4. 1 十進制轉(zhuǎn)二進制
private static void desToBin() {//10進制轉(zhuǎn)2進制
String s = Integer.toBinaryString(257);
System.out.println(s);//100000001
}
4. 2 二進制轉(zhuǎn)十進制
Integer.parseInt(String s, int radix)
第一個參數(shù):要轉(zhuǎn)成十進制數(shù)的二進制字符串
第二個參數(shù):指定的進制
注意:這里不支持直接使用負數(shù)的二進制碼來表示負數(shù),而是要用正數(shù)的二進制碼添加負號來表示
private static void binToDes() {
int i = Integer.parseInt("-1100101101", 2);
System.out.println(i);//813
int i2 = Integer.parseInt("-1100101101", 2);
System.out.println(i2);//-813
}
4. 3 練習(xí):
需求:輸入十進制整數(shù)轉(zhuǎn)成2進制,輸入二進制整數(shù)轉(zhuǎn)成十進制
package cn.cxy.exec;
import java.util.Scanner;
/*完成十進制與二進制之間的轉(zhuǎn)換*/
public class Test {
public static void main(String[] args) {
//m1();
m2();
}
private static void m2() {
while (true) {
System.out.print("輸入整數(shù)的二進制碼:");
String s = new Scanner(System.in).nextLine();
int a = Integer.parseInt(s, 2);
System.out.println("對應(yīng)的十進制數(shù)是:"+a);
}
}
private static void m1() {
while (true) {
System.out.print("輸入十進制整數(shù):");
int a = new Scanner(System.in).nextInt();
String s = Integer.toBinaryString(a);
System.out.println("對應(yīng)的二進制數(shù)是:"+s);
}
}
}
5. 二進制數(shù)據(jù)在Java代碼中的寫法
在Java語法中:二進制字面值可以使用 0b 前綴的整數(shù)直接表示:
int a = 0b11001;
byte b = 0b1111111;
// 0b前綴語法不允許直接寫負數(shù)的二進制碼,這樣寫實際表示的是正數(shù)128
byte c = 0b10000000; //此處錯誤
// 要寫byte的最小值-128,需要寫 128 的二進制碼,并加負號
byte d = -0b10000000;
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
基于Jackson實現(xiàn)API接口數(shù)據(jù)脫敏的示例詳解
用戶的一些敏感數(shù)據(jù),例如手機號、郵箱、身份證等信息,在數(shù)據(jù)庫以明文存儲,但在接口返回數(shù)據(jù)給瀏覽器(或三方客戶端)時,希望對這些敏感數(shù)據(jù)進行脫敏,所以本文就給大家介紹以惡如何利用Jackson實現(xiàn)API接口數(shù)據(jù)脫敏,需要的朋友可以參考下2023-08-08
SpringBoot發(fā)送各種復(fù)雜格式郵件的示例詳解
本文主要介紹了如何使用JavaMailSender接口和MimeMessageHelper類,在SpringBoot實現(xiàn)發(fā)送帶有附件,嵌入資源,抄送和密送的復(fù)雜郵件,需要的可以了解下2024-11-11
MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入詳解
這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何使用枚舉自動關(guān)聯(lián)注入的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MyBatis-Plus具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03
Java Apache Shiro安全框架快速開發(fā)詳解流程
Apache Shiro是一個強大且易用的Java安全框架,執(zhí)行身份驗證、授權(quán)、密碼和會話管理。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應(yīng)用程序,從最小的移動應(yīng)用程序到最大的網(wǎng)絡(luò)和企業(yè)應(yīng)用程序2021-10-10

