JAVA中的進制轉(zhuǎn)換

對于進制,我們程序員都不陌生鞭光。我們常用的進制有2進制吏廉、8進制、10進制惰许、16進制席覆。它們之間的區(qū)別在于數(shù)運算時進位不同。2進制是逢2進1啡省、8進制是逢8進1娜睛、10進制是逢10進1、16進制是逢16進1卦睹。2進制的存在是因為計算機只能識別0和1故有了2進制。10進制是因為我們常用的數(shù)字表示法是10進制方库。那么8進制和16進制為什么存在呢结序。為了減少書寫的復(fù)雜性和讀起來也更直觀引入了8進制和16進制。下面我們就看下這些進制之間是如何轉(zhuǎn)換的纵潦。

十進制轉(zhuǎn)二進制:

方法:十進制數(shù)除2取余法徐鹤,即十進制數(shù)除2,余數(shù)從右到左放邀层,得到的商值繼續(xù)除2返敬,依此步驟繼續(xù)向下運算直到商為0為止。
如:100 轉(zhuǎn)換為2進制步驟如下:
100 / 2 商為50 余數(shù)為0 -> 0
50 /2 商為25余數(shù)為0 -> 00
25 /2 商為12余數(shù)為1 -> 100
12 / 2 商為6 余數(shù)為0 -> 0100
6 /2 商為3余數(shù)為 0 -> 00100
3 /2 商為1 余數(shù)為 1 -> 100100
1 /2 商為0 余數(shù)為1 -> 1100100
到商為0為止寥院,即100的二進制表示為 1100100

二進制轉(zhuǎn)十進制:

方法:把二進制數(shù)每位按權(quán)展開(按權(quán)展開:進制數(shù)乘以對應(yīng)的權(quán)數(shù)次方劲赠,如二進制數(shù)1100100左邊第一位按權(quán)展開為 0 * 2 ^ 0 = 0 )、相加即得十進制數(shù)秸谢。其中權(quán)就是從右往左數(shù)第幾位數(shù)
如1100100從右往左每位數(shù)的權(quán)依次為:0凛澎、1、2估蹄、3塑煎、4、5臭蚁、6
那么把2進制1100100轉(zhuǎn)換為10進制就是 02^0 + 02^1 + 12^2 + 02^3 + 02^4 +12^5 + 1*2^6 = 0+0+4+0+0+32+64 = 100 ,即2進制1100100對應(yīng)的10進制數(shù)為100

二進制轉(zhuǎn)八進制

方法:從右往左每3位二進制數(shù)按權(quán)展開(注意三位的權(quán)分別為0最铁、1讯赏、2)相加得到1位八進制數(shù)。不足3位左邊補0.
如1100100 轉(zhuǎn)換為8進制就是
右邊3位 100 -> 02^0 + 02^1 + 12^2 = 4
中間3位 100 -> 0
2^0 + 02^1 + 12^2 = 4
左邊3位 001 -> 12^0 + 02^1 + 0*2^2 = 1
所以1100100轉(zhuǎn)換為8進制為 144

八進制轉(zhuǎn)二進制

方法:八進制數(shù)每位數(shù)通過除2取余法冷尉,得到二進制數(shù)待逞,對每個八進制為3個二進制位,不足時在最左邊補零网严。
如8進制144轉(zhuǎn)換為2進制
第一個8進制位:4 按十進制轉(zhuǎn)二進制計算得 100
第二個8進制位:4 按十進制轉(zhuǎn)二進制計算得 100
第三個8進制位:1 按十進制轉(zhuǎn)二進制計算得 1 不足3位左邊補0识樱,即001
故八進制144轉(zhuǎn)換為2進制為 001100100習(xí)慣上去掉左邊的0即為1100100

二進制轉(zhuǎn)十六進制

方法:與二進制轉(zhuǎn)八進制方法近似,八進制是取三合一震束,十六進制是取四合一怜庸。4位二進制轉(zhuǎn)成十六進制是從右到左開始轉(zhuǎn)換,不足時補0
如:1100100轉(zhuǎn)換為16進制
右邊4位 0100 -> 02^0 + 02^1 + 12^2 +02^3 = 4
左邊4位0110 -> 02^0 + 12^1 +12^2 +02^3 = 6
1100100轉(zhuǎn)換為16進制為 64

十六進制轉(zhuǎn)二進制

方法:十六進制數(shù)每位數(shù)通過除2取余法垢村,得到二進制數(shù)割疾,對每個十六進制為4個二進制位,不足時在最左邊補零嘉栓。
如16進制64轉(zhuǎn)換為2進制
第一個16進制位: 4 按十進制轉(zhuǎn)二進制計算得 100宏榕,不足4位左邊補0,即0100
第二個16進制位: 6按十進制轉(zhuǎn)二進制計算得 110侵佃,不足4位左邊補0麻昼,即0110
故16進制64轉(zhuǎn)換為2進制為 01100100習(xí)慣上去掉左邊的0即為1100100

十進制轉(zhuǎn)八進制

方法1:十進制轉(zhuǎn)換為二進制,然后二進制換為8進制
方法2:把十進制轉(zhuǎn)八進制按照除8取余馋辈,余數(shù)從右至左放抚芦,直到商為0為止。
如:10進制100轉(zhuǎn)換為8進制
100 / 8 商為12 余數(shù)為 4 -> 4
12 / 8 商為1 余數(shù)為 4 -> 44
1 / 8 商為0 余數(shù)為 1 -> 144
到商為0為止迈螟,即100的8進制表示為 144

十進制轉(zhuǎn)十六進制

方法1:十進制轉(zhuǎn)換為二進制叉抡,然后二進制換為十六進制
方法2:把十進制轉(zhuǎn)十六進制按照除16取余,余數(shù)從右至左放答毫,直到商為0為止褥民。
如:10進制100轉(zhuǎn)換為16進制
100 / 16 商為6 余數(shù)為 4 -> 4
6 / 16 商為0 余數(shù)為 6 -> 64
到商為0為止,即100的16進制表示為 64

八進制轉(zhuǎn)十進制

方法:把八進制數(shù)每位按權(quán)展開(按權(quán)展開:進制數(shù)乘以對應(yīng)的權(quán)數(shù)次方洗搂,如八進制數(shù)144左邊第一位按權(quán)展開為 4 * 8 ^ 0 = 4 )消返、相加即得十進制數(shù)。
如:八進制 144轉(zhuǎn)換為10進制蚕脏, 4* 8 ^ 0 + 4 * 8 ^ 1 +1 * 8 ^ 2 = 4 + 32 + 64 = 100

十六進制轉(zhuǎn)10進制

方法:把十六進制數(shù)每位按權(quán)展開(按權(quán)展開:進制數(shù)乘以對應(yīng)的權(quán)數(shù)次方侦副,如十六進制數(shù)64左邊第一位按權(quán)展開為 4 * 16 ^ 0 = 4 )、相加即得十進制數(shù)驼鞭。
如:十六進制數(shù)64轉(zhuǎn)換為10進制秦驯, 4 * 16 ^0 + 6 * 16 ^ 1 = 4 + 96 = 100

八進制與十六進制互轉(zhuǎn)

方法一:八進制(十六進制)先轉(zhuǎn)換為二進制,然后二進制再轉(zhuǎn)換為十六進制(八進制)
方法二:八進制(十六進制)先轉(zhuǎn)換為十進制挣棕,然后十進制再轉(zhuǎn)換為十六進制(八進制)

十進制轉(zhuǎn)換為其它進制

方法:把十進制轉(zhuǎn)其它進制按照除進制數(shù)取余译隘,余數(shù)從右至左放亲桥,直到商為0為止。
如:10進制100轉(zhuǎn)換為7進制(其它進制類似)
100 / 7 商為14 余數(shù)為 2 -> 2
14 / 7 商為2 余數(shù)為0 -> 02
2 / 7 商為0 余數(shù)為 2 -> 202
到商為0為止固耘,即100的7進制表示為 202

其它進制轉(zhuǎn)換為10進制

方法:把其它進制數(shù)每位按權(quán)展開(按權(quán)展開:進制數(shù)乘以對應(yīng)的權(quán)數(shù)次方题篷,如七進制數(shù)202左邊第一位按權(quán)展開為 2 * 7 ^ 0 = 2 )、相加即得十進制數(shù)厅目。
如:7進制202轉(zhuǎn)換為10進制番枚,2 * 7 ^ 0 + 0 * 7 ^ 1 + 2 * 7 ^ 2 = 2 + 0 + 98 = 100

至此各進制之間的轉(zhuǎn)換就到此結(jié)束了,下面我們看下java中是如何進行這些進制轉(zhuǎn)換损敷。

十進制轉(zhuǎn)其它進制

Integer.toHexString(10);  將10進制100轉(zhuǎn)換為十六進制葫笼,返回字符串類型
Integer.toOctalString(10);  將10進制100轉(zhuǎn)為八進制,返回字符串類型
Integer.toBinaryString(10); 將10進制100轉(zhuǎn)為二進制拗馒,返回字符串類型
Integer.toString(100, 7); 將10進制100轉(zhuǎn)換為7進制路星,返回字符串類型,其它第一個參數(shù)為待轉(zhuǎn)換的10進制數(shù)诱桂,第二個參數(shù)是需要轉(zhuǎn)換的進制洋丐。

其它進制轉(zhuǎn)換為十進制

方法一:Integer.valueOf("FFFF",16).toString(); 例為16進制轉(zhuǎn)換為10進制,如果是其它進制第二個參數(shù)傳進制數(shù)挥等,第一個參數(shù)傳對應(yīng)的進制表示法
方法二:Integer.parseInt("FFFF",16);  例為16進制轉(zhuǎn)換為10進制友绝,如果是其它進制第二個參數(shù)傳進制數(shù),第一個參數(shù)傳對應(yīng)的進制表示法
方法三:Integer.toString(0xFFFF);  //該方法可直接傳入表示十六進制數(shù)字的基本數(shù)據(jù)類型触菜,傳入指定的進制表示法的數(shù)字即可九榔,16進制表示法:數(shù)前面加 0x如0xff,8進制表示法數(shù)前面加0如014涡相,注意該方法無法轉(zhuǎn)換為2進制數(shù),程序無法識別2進制剩蟀,比如你傳100,程序是當(dāng)10進制100處理還是當(dāng)2進制4處理催蝗,有歧義,故無法識別育特,程序默認是按10進制數(shù)處理的

有了十進制和其它進制之間的轉(zhuǎn)換丙号,那么兩個其它進制之間的轉(zhuǎn)換只需要以10進制為中介就可以了,如八進制轉(zhuǎn)換為十六進制缰冤,先將八進制轉(zhuǎn)換為十進制犬缨,然后再將十進制轉(zhuǎn)換為十六進制。其它類似棉浸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怀薛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子迷郑,更是在濱河造成了極大的恐慌枝恋,老刑警劉巖创倔,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焚碌,居然都是意外死亡畦攘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門十电,熙熙樓的掌柜王于貴愁眉苦臉地迎上來知押,“玉大人,你說我怎么就攤上這事鹃骂√ǘⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵偎漫,是天一觀的道長爷恳。 經(jīng)常有香客問我,道長象踊,這世上最難降的妖魔是什么温亲? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮杯矩,結(jié)果婚禮上栈虚,老公的妹妹穿的比我還像新娘。我一直安慰自己史隆,他們只是感情好魂务,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泌射,像睡著了一般粘姜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熔酷,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天孤紧,我揣著相機與錄音,去河邊找鬼拒秘。 笑死号显,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躺酒。 我是一名探鬼主播押蚤,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼羹应!你這毒婦竟也來了揽碘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钾菊,沒想到半個月后帅矗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡煞烫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年浑此,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滞详。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡凛俱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出料饥,到底是詐尸還是另有隱情蒲犬,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布岸啡,位于F島的核電站原叮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巡蘸。R本人自食惡果不足惜奋隶,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悦荒。 院中可真熱鬧唯欣,春花似錦、人聲如沸搬味。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碰纬。三九已至萍聊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悦析,已是汗流浹背脐区。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留她按,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓炕柔,卻偏偏與公主長得像酌泰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匕累,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容