目錄
? ? ? ? ? ? 前言
? ??????????二進制(BIN)
? ? ? ? ? ? 八進制(OCT)
? ? ? ? ? ? 十進制(DEC)
? ? ? ? ? ? 十六進制(HEX)
前言:
進制轉(zhuǎn)換對于每個程序員來說是一個必不可少的知識属韧,由于最近在看JAVA的源碼晾嘶,源碼中部分運算都是直接對二進制數(shù)俩功、十六進制數(shù)字進行直接運算叫倍。這對我這學(xué)渣來說簡直就是噩夢,所以最近查了很多資料销凑,打算對常用的進制轉(zhuǎn)換進行一個總結(jié)蛮放。
二進制(BIN)
二進制(binary)在數(shù)學(xué)和數(shù)字電路中指以2為基數(shù)的記數(shù)系統(tǒng)撵割,以2為基數(shù)代表系統(tǒng)是二進位制的。這一系統(tǒng)中跑杭,通常用兩個不同的符號0(代表零)和1(代表一)來表示 铆帽。數(shù)字電子電路)中,邏輯門的實現(xiàn)直接應(yīng)用了二進制艘蹋,因此現(xiàn)代的計算機和依賴計算機的設(shè)備里都用到二進制锄贼。每個數(shù)字稱為一個比特(Bit,Binary digit的縮寫 女阀。(摘自百度百科)
所謂二進制簡單理解就是:由 0和1構(gòu)成宅荤,每一位可以表達的最大數(shù)字就是1 ,每逢2就向前進一位數(shù)浸策。
那么怎么進行十進制到二進制的轉(zhuǎn)換呢冯键?籠統(tǒng)的來說就是把十進制的數(shù)字以短除的形式進行計算,即除數(shù)(十進制)除以(進制數(shù) 二進制就除以二 八進制 十六進制同理)然后將所有的余數(shù)反向排列成為一串?dāng)?shù)字庸汗,這串?dāng)?shù)字就是被轉(zhuǎn)換后的結(jié)果惫确。(啥,你問我短除是啥!來上圖)
把余數(shù)自下向上依次排列改化,9轉(zhuǎn)換為二進制數(shù)字就為 1001
相對的 把二進制 轉(zhuǎn)換為十進制的數(shù)字方法為:從二進制最右側(cè)位的數(shù)字開始掩蛤,拿到該位數(shù)字并乘以進制數(shù)(2)的該數(shù)字位的平方(注:從0開始也就是最右側(cè)位數(shù)為0而不是1),再依次向左側(cè)推進直到最左側(cè)的一位 陈肛,最后將每一位得到的值相加揍鸟,就等到被轉(zhuǎn)換后的十進制數(shù)字
以二進制 1001 為例
最右側(cè)的數(shù)字為 1 該位運算的結(jié)果為 1 X 2的0次方(補充 任何除了0的數(shù)字的0次方都等于1,0的0次方?jīng)]有意義句旱;任何數(shù)字的1次方都等于本身阳藻。)依次計算出每位的結(jié)果。
1 X 2的0次方 = 1
0 X 2的1次方 = 0
0 X 2的2次方 = 0
1 X 2的3次方 = 8
二進制數(shù)1001轉(zhuǎn)換為十進制數(shù)為 1 X 2的0次方 + 0 X 2的1次方 + 0 X 2的2次方 + 1 X 2的3次方 = 1 + 0 + 0 + 8 = 9
至此 一個二進制十進制的互相轉(zhuǎn)換就完成了
八進制(OCT)
八進制谈撒,Octal腥泥,縮寫OCT或O,一種以8為基數(shù)的計數(shù)法啃匿,采用0蛔外,1,2溯乒,3冒萄,4,5橙数,6尊流,7八個數(shù)字,逢八進1灯帮。一些編程語言中常常以數(shù)字0開始表明該數(shù)字是八進制崖技。八進制的數(shù)和二進制數(shù)可以按位對應(yīng)(八進制一位對應(yīng)二進制三位),因此常應(yīng)用在計算機語言中钟哥。(摘自百度百科)
八進制簡單理解就是:由 0~7的數(shù)字組成迎献,每一位最大可表示的數(shù)字為7,每逢8向前進一位腻贰。(注:為了防止八進制數(shù)字和十進制數(shù)字混淆吁恍,一般編程語言中的八進制的最左位會補0)
由十進制向八進制轉(zhuǎn)換,同理與二進制播演。不同的地方在于除數(shù)變成了八進制的進制數(shù) "8" (注:小于等于7大于等于0的數(shù)字轉(zhuǎn)化的結(jié)果為十進制數(shù)字本身)
把余數(shù)自下向上依次排列冀瓦,把9轉(zhuǎn)換為八進制數(shù)為 "011"
由八進制向十進制進行轉(zhuǎn)化與二進制轉(zhuǎn)換為十進制同理。不同之處在于進制數(shù)變成了"8"写烤,計算方式為
1 X 8的0次方 = 1
1 X 8的1次方 = 8
0 X 8的2次方 = 0(注:實際運算中需要對補零位忽略不計翼闽,本身0 X 任何數(shù)都是0)
八進制數(shù)011轉(zhuǎn)換為十進制為 1 X 8的0次方 + 1 X 8的1次方 + 0 X 8的2次方 = 1 + 8 + 0 = 9
十進制(DEC)(忽略)PS: 這個要是不會的話推薦直接重開
十六進制(HEX)
十六進制(簡寫為hex或下標(biāo)16)在數(shù)學(xué)中是一種逢16進1的進位制。一般用數(shù)字0到9和字母A到F(或a~f)表示洲炊,其中:A~F表示10~15感局,這些稱作十六進制數(shù)字尼啡。(摘自百度百科)
十六進制就比較有意思了它是由 數(shù)字0~9 字母 a~f (不區(qū)分大小寫)組成 (PS:由于數(shù)字中沒有大于 9 的單字 所以使用了字母 a~f 依次為 10 ~ 15 的數(shù)字)每逢16進一位數(shù)字。在一般的程序語言中多用0x為開頭表示16進制的數(shù)字询微,
由十進制向十六進制轉(zhuǎn)換崖瞭,同理將除數(shù)變?yōu)?b>"16"(注:小于等于9大于等于0的數(shù)字轉(zhuǎn)化的結(jié)果為十進制數(shù)字本身,大于9小于等于15的部分依次為 a~f)
把余數(shù)自下向上排列得到十進制轉(zhuǎn)化十六進制數(shù)字 0X354
十六進制轉(zhuǎn)化為十進制與上同理撑毛,就不作詳細(xì)的分析读恃。公式為 4 X 16的0次方 + 5 X 16的1次方 + 3 X 16的2次方 = 4 + 80 + 768 = 852
至此,整篇文章結(jié)束代态。第一次在網(wǎng)絡(luò)上發(fā)表自己的文章。如有不足還請在評論區(qū)中指出疹吃。