目錄
? ? ? ? ? ? 前言
? ??????????二進(jìn)制(BIN)
? ? ? ? ? ? 八進(jìn)制(OCT)
? ? ? ? ? ? 十進(jìn)制(DEC)
? ? ? ? ? ? 十六進(jìn)制(HEX)
前言:
進(jìn)制轉(zhuǎn)換對(duì)于每個(gè)程序員來(lái)說(shuō)是一個(gè)必不可少的知識(shí),由于最近在看JAVA的源碼,源碼中部分運(yùn)算都是直接對(duì)二進(jìn)制數(shù)、十六進(jìn)制數(shù)字進(jìn)行直接運(yùn)算。這對(duì)我這學(xué)渣來(lái)說(shuō)簡(jiǎn)直就是噩夢(mèng),所以最近查了很多資料,打算對(duì)常用的進(jìn)制轉(zhuǎn)換進(jìn)行一個(gè)總結(jié)。
二進(jìn)制(BIN)
二進(jìn)制(binary)在數(shù)學(xué)和數(shù)字電路中指以2為基數(shù)的記數(shù)系統(tǒng),以2為基數(shù)代表系統(tǒng)是二進(jìn)位制的。這一系統(tǒng)中,通常用兩個(gè)不同的符號(hào)0(代表零)和1(代表一)來(lái)表示 。數(shù)字電子電路)中,邏輯門的實(shí)現(xiàn)直接應(yīng)用了二進(jìn)制,因此現(xiàn)代的計(jì)算機(jī)和依賴計(jì)算機(jī)的設(shè)備里都用到二進(jìn)制。每個(gè)數(shù)字稱為一個(gè)比特(Bit,Binary digit的縮寫(xiě) 。(摘自百度百科)
所謂二進(jìn)制簡(jiǎn)單理解就是:由 0和1構(gòu)成,每一位可以表達(dá)的最大數(shù)字就是1 ,每逢2就向前進(jìn)一位數(shù)。
那么怎么進(jìn)行十進(jìn)制到二進(jìn)制的轉(zhuǎn)換呢?籠統(tǒng)的來(lái)說(shuō)就是把十進(jìn)制的數(shù)字以短除的形式進(jìn)行計(jì)算,即除數(shù)(十進(jìn)制)除以(進(jìn)制數(shù) 二進(jìn)制就除以二 八進(jìn)制 十六進(jìn)制同理)然后將所有的余數(shù)反向排列成為一串?dāng)?shù)字,這串?dāng)?shù)字就是被轉(zhuǎn)換后的結(jié)果。(啥,你問(wèn)我短除是啥!來(lái)上圖)

把余數(shù)自下向上依次排列,9轉(zhuǎn)換為二進(jìn)制數(shù)字就為 1001
相對(duì)的 把二進(jìn)制 轉(zhuǎn)換為十進(jìn)制的數(shù)字方法為:從二進(jìn)制最右側(cè)位的數(shù)字開(kāi)始,拿到該位數(shù)字并乘以進(jìn)制數(shù)(2)的該數(shù)字位的平方(注:從0開(kāi)始也就是最右側(cè)位數(shù)為0而不是1),再依次向左側(cè)推進(jìn)直到最左側(cè)的一位 ,最后將每一位得到的值相加,就等到被轉(zhuǎn)換后的十進(jìn)制數(shù)字
以二進(jìn)制 1001 為例
最右側(cè)的數(shù)字為 1 該位運(yùn)算的結(jié)果為 1 X 2的0次方(補(bǔ)充 任何除了0的數(shù)字的0次方都等于1,0的0次方?jīng)]有意義;任何數(shù)字的1次方都等于本身。)依次計(jì)算出每位的結(jié)果。
1 X 2的0次方 = 1
0 X 2的1次方 = 0
0 X 2的2次方 = 0
1 X 2的3次方 = 8
二進(jìn)制數(shù)1001轉(zhuǎn)換為十進(jìn)制數(shù)為 1 X 2的0次方 + 0 X 2的1次方 + 0 X 2的2次方 + 1 X 2的3次方 = 1 + 0 + 0 + 8 = 9
至此 一個(gè)二進(jìn)制十進(jìn)制的互相轉(zhuǎn)換就完成了
八進(jìn)制(OCT)
八進(jìn)制,Octal,縮寫(xiě)OCT或O,一種以8為基數(shù)的計(jì)數(shù)法,采用0,1,2,3,4,5,6,7八個(gè)數(shù)字,逢八進(jìn)1。一些編程語(yǔ)言中常常以數(shù)字0開(kāi)始表明該數(shù)字是八進(jìn)制。八進(jìn)制的數(shù)和二進(jìn)制數(shù)可以按位對(duì)應(yīng)(八進(jìn)制一位對(duì)應(yīng)二進(jìn)制三位),因此常應(yīng)用在計(jì)算機(jī)語(yǔ)言中。(摘自百度百科)
八進(jìn)制簡(jiǎn)單理解就是:由 0~7的數(shù)字組成,每一位最大可表示的數(shù)字為7,每逢8向前進(jìn)一位。(注:為了防止八進(jìn)制數(shù)字和十進(jìn)制數(shù)字混淆,一般編程語(yǔ)言中的八進(jìn)制的最左位會(huì)補(bǔ)0)
由十進(jìn)制向八進(jìn)制轉(zhuǎn)換,同理與二進(jìn)制。不同的地方在于除數(shù)變成了八進(jìn)制的進(jìn)制數(shù) "8" (注:小于等于7大于等于0的數(shù)字轉(zhuǎn)化的結(jié)果為十進(jìn)制數(shù)字本身)

把余數(shù)自下向上依次排列,把9轉(zhuǎn)換為八進(jìn)制數(shù)為 "011"
由八進(jìn)制向十進(jìn)制進(jìn)行轉(zhuǎn)化與二進(jìn)制轉(zhuǎn)換為十進(jìn)制同理。不同之處在于進(jìn)制數(shù)變成了"8",計(jì)算方式為
1 X 8的0次方 = 1
1 X 8的1次方 = 8
0 X 8的2次方 = 0(注:實(shí)際運(yùn)算中需要對(duì)補(bǔ)零位忽略不計(jì),本身0 X 任何數(shù)都是0)
八進(jìn)制數(shù)011轉(zhuǎn)換為十進(jìn)制為 1 X 8的0次方 + 1 X 8的1次方 + 0 X 8的2次方 = 1 + 8 + 0 = 9
十進(jìn)制(DEC)(忽略)PS: 這個(gè)要是不會(huì)的話推薦直接重開(kāi)
十六進(jìn)制(HEX)
十六進(jìn)制(簡(jiǎn)寫(xiě)為hex或下標(biāo)16)在數(shù)學(xué)中是一種逢16進(jìn)1的進(jìn)位制。一般用數(shù)字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,這些稱作十六進(jìn)制數(shù)字。(摘自百度百科)
十六進(jìn)制就比較有意思了它是由 數(shù)字0~9 字母 a~f (不區(qū)分大小寫(xiě))組成 (PS:由于數(shù)字中沒(méi)有大于 9 的單字 所以使用了字母 a~f 依次為 10 ~ 15 的數(shù)字)每逢16進(jìn)一位數(shù)字。在一般的程序語(yǔ)言中多用0x為開(kāi)頭表示16進(jìn)制的數(shù)字,
由十進(jìn)制向十六進(jìn)制轉(zhuǎn)換,同理將除數(shù)變?yōu)?b>"16"(注:小于等于9大于等于0的數(shù)字轉(zhuǎn)化的結(jié)果為十進(jìn)制數(shù)字本身,大于9小于等于15的部分依次為 a~f)

把余數(shù)自下向上排列得到十進(jìn)制轉(zhuǎn)化十六進(jìn)制數(shù)字 0X354
十六進(jìn)制轉(zhuǎn)化為十進(jìn)制與上同理,就不作詳細(xì)的分析。公式為 4 X 16的0次方 + 5 X 16的1次方 + 3 X 16的2次方 = 4 + 80 + 768 = 852
至此,整篇文章結(jié)束。第一次在網(wǎng)絡(luò)上發(fā)表自己的文章。如有不足還請(qǐng)?jiān)谠u(píng)論區(qū)中指出。