手把手教你JAVA進(jìn)制之間的轉(zhuǎn)換
1.前言
進(jìn)制也就是進(jìn)位計(jì)數(shù)制,是人為定義的帶進(jìn)位的計(jì)數(shù)方法,類似于統(tǒng)計(jì)”正”字,對(duì)于任何一種進(jìn)制,X進(jìn)制,就表示每一位置上的數(shù)運(yùn)算時(shí)都是逢X進(jìn)一
10進(jìn)制 : 逢十進(jìn)一,包含元素 0~9
16進(jìn)制 : 逢十六進(jìn)一,包含元素 0~9 a b c d e f
2 進(jìn)制 : 逢二進(jìn)一,包含 0 和 1
通常情況下: 1byte = 8個(gè)二進(jìn)制位
表示一個(gè)數(shù)字如果用二進(jìn)制來表示的話,可以寫成: 0000 1111
把這8個(gè)位進(jìn)行組合,每3位組合就形成了8進(jìn)制
每4位組合就形成了16進(jìn)制
2.不同進(jìn)制的特點(diǎn)
2進(jìn)制 : 逢二進(jìn)一 , 包含 0和1 , 以0b開頭
8進(jìn)制 : 逢八進(jìn)一 , 包含 0~7 , 以0開頭
10進(jìn)制 : 逢十進(jìn)一 , 包含元素 0~9
16進(jìn)制 : 逢十六進(jìn)一 ,包含元素 0~9 a b c d e f ,以0x開頭
3.進(jìn)制之間的轉(zhuǎn)換
關(guān)于二進(jìn)制的一些數(shù)據(jù)
3.1 二進(jìn)制轉(zhuǎn)十進(jìn)制:
需求:計(jì)算二進(jìn)制數(shù)據(jù):0000 1101 對(duì)應(yīng)的十進(jìn)制
3.2 十進(jìn)制轉(zhuǎn)二進(jìn)制:
需求:求十進(jìn)制數(shù)字11對(duì)應(yīng)的二進(jìn)制數(shù)
簡(jiǎn)便算法: 11 先拆分成2的次冪元素組成的數(shù), (8+2+1) 然后對(duì)應(yīng)位置改成二進(jìn)制 0000 1011算式計(jì)算:不斷除以2商0為止,取余,倒著寫,11的結(jié)果:1011
7的結(jié)果0111(讀的時(shí)候先朝右,再朝上的方向讀)
3.3 二進(jìn)制轉(zhuǎn)八進(jìn)制:
從低次位開始,每3位為一組,產(chǎn)生一個(gè)八進(jìn)制數(shù)字,最高位不足補(bǔ)0
需求:計(jì)算二進(jìn)制數(shù)據(jù)110 0111對(duì)應(yīng)的八進(jìn)制
需求:計(jì)算八進(jìn)制數(shù)據(jù)023 0653對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)
3.4 十六進(jìn)制轉(zhuǎn)二進(jìn)制:
一個(gè)數(shù)字拆分成4個(gè)數(shù)字
舉例:b->11對(duì)應(yīng)的二進(jìn)制數(shù)1011
3.5 二進(jìn)制轉(zhuǎn)十六進(jìn)制:
四個(gè)一組,轉(zhuǎn)為一個(gè)數(shù)字,以0x開始
舉例: 1111->15 ,a在16進(jìn)制代表的是10,依次類推,15對(duì)應(yīng)的16進(jìn)制數(shù)就是f
4. 代碼實(shí)現(xiàn)二進(jìn)制與十進(jìn)制互轉(zhuǎn)
java 中也提供了二進(jìn)制和十進(jìn)制的互轉(zhuǎn)方法:
4. 1 十進(jìn)制轉(zhuǎn)二進(jìn)制
private static void desToBin() {//10進(jìn)制轉(zhuǎn)2進(jìn)制 String s = Integer.toBinaryString(257); System.out.println(s);//100000001 }
4. 2 二進(jìn)制轉(zhuǎn)十進(jìn)制
Integer.parseInt(String s, int radix)
第一個(gè)參數(shù):要轉(zhuǎn)成十進(jìn)制數(shù)的二進(jìn)制字符串
第二個(gè)參數(shù):指定的進(jìn)制
注意:這里不支持直接使用負(fù)數(shù)的二進(jìn)制碼來表示負(fù)數(shù),而是要用正數(shù)的二進(jìn)制碼添加負(fù)號(hào)來表示
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í):
需求:輸入十進(jìn)制整數(shù)轉(zhuǎn)成2進(jìn)制,輸入二進(jìn)制整數(shù)轉(zhuǎn)成十進(jìn)制
package cn.cxy.exec; import java.util.Scanner; /*完成十進(jìn)制與二進(jìn)制之間的轉(zhuǎn)換*/ public class Test { public static void main(String[] args) { //m1(); m2(); } private static void m2() { while (true) { System.out.print("輸入整數(shù)的二進(jìn)制碼:"); String s = new Scanner(System.in).nextLine(); int a = Integer.parseInt(s, 2); System.out.println("對(duì)應(yīng)的十進(jìn)制數(shù)是:"+a); } } private static void m1() { while (true) { System.out.print("輸入十進(jìn)制整數(shù):"); int a = new Scanner(System.in).nextInt(); String s = Integer.toBinaryString(a); System.out.println("對(duì)應(yīng)的二進(jìn)制數(shù)是:"+s); } } }
5. 二進(jìn)制數(shù)據(jù)在Java代碼中的寫法
在Java語法中:二進(jìn)制字面值可以使用 0b 前綴的整數(shù)直接表示:
int a = 0b11001;
byte b = 0b1111111;
// 0b前綴語法不允許直接寫負(fù)數(shù)的二進(jìn)制碼,這樣寫實(shí)際表示的是正數(shù)128
byte c = 0b10000000; //此處錯(cuò)誤
// 要寫byte的最小值-128,需要寫 128 的二進(jìn)制碼,并加負(fù)號(hào)
byte d = -0b10000000;
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程
使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時(shí)間了,項(xiàng)目在技術(shù)上已經(jīng)沒有什么難點(diǎn)了,基于現(xiàn)有的技術(shù)就可以實(shí)現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于整合SSM框架:Spring MVC + Spring + MyBatis的相關(guān)資料,需要的朋友可以參考下。2017-07-07SpringCloud:feign對(duì)象傳參和普通傳參及遇到的坑解決
這篇文章主要介紹了SpringCloud:feign對(duì)象傳參和普通傳參及遇到的坑解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法
404錯(cuò)誤是網(wǎng)站常見的錯(cuò)誤之一,出現(xiàn)的原因很多,解決方法也有很多種,這篇文章主要給大家介紹了關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法的相關(guān)資料,需要的朋友可以參考下2024-01-01關(guān)于Spring啟動(dòng)流程及Bean生命周期梳理
這篇文章主要介紹了關(guān)于Spring啟動(dòng)流程及Bean生命周期梳理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Mybatis Trim標(biāo)簽用法簡(jiǎn)單介紹
這篇文章主要介紹了Mybatis Trim標(biāo)簽用法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05java String 類的一些理解 關(guān)于==、equals、null
在對(duì)字符串的相等判斷,==判斷的是地址是否相同,equal()判斷的是字符值是否相同。大多數(shù)時(shí)候==跟equal()的結(jié)果都是相同的。2009-06-06Applet小應(yīng)用程序開發(fā)簡(jiǎn)介
Applet小應(yīng)用程序開發(fā)簡(jiǎn)介 ,用java開發(fā)的小程序,需要的朋友可以參考下2012-09-09Spring實(shí)戰(zhàn)之Qualifier注解用法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之Qualifier注解用法,結(jié)合實(shí)例形式詳細(xì)分析了spring Qualifier注解相關(guān)配置、定義與使用方法,需要的朋友可以參考下2019-12-12SpringBoot全局異常處理之多個(gè)處理器匹配順序(最新推薦)
這篇文章主要介紹了SpringBoot全局異常處理之多個(gè)處理器匹配順序(最新推薦),調(diào)試源碼可見匹配順序?yàn)椋寒惓蛹?jí)高者優(yōu)先,再清楚點(diǎn),子類異常處理器優(yōu)先,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-03-03