大話二進制,八進制,十進制,十六進制之間的轉換

1.前言

       每次放假最無聊的事情,就是不想起牀,不想吃飯,方正就是不想動,躺在牀上,看着手機,無聊的刷着QQ空間,雖然如今已經不多人玩QQ空間,但是這種習慣一直保持到如今,都沒有改變過,電腦上的QQ忽然閃動着,我知道是丁大叔發來的QQ消息,叫我一塊兒去吃重慶老麻抄手,丁大叔之因此叫大叔,是由於一塊兒上學的時候,被咱們班上的女生調戲了一下,因此我時常拿這個調侃他,不過他也歷來都不在意。linux

       我是湖北人,丁大叔是四川人,我倆的口味都同樣,吃東西都要多少帶點辣的,在這個變態的廣州,他們都不吃辣椒的,要麼就是超級辣的那種,真叫人受不了。c++

       在我內心我一直很佩服丁大叔的,他湖南大學的高材生,日語專業,日語一級,英語六級,更讓我佩服的是他大學的時候,他們班上就3個男生,其餘都是女孩子,他萬花叢中過片葉不沾身,硬着沒找個女友,我佩服的全身着地,他最大的志向就是去島國,畢竟人家日語一級嘛,要是不去內心上也過不去。程序員

       仍是和往常同樣,吃着抄手,討論着咱們最近都在公司作什麼項目,一次無心的談話,他問我知道什麼是二進制麼,我說知道,他接着問,你知道怎麼用嗎,我說不知道,難道不會用二進制,還不能寫代碼了麼?說了這麼多畢竟丁大叔,仍是那麼牛逼,只怪本身學而不精嘛,因而有了這篇文章。編程

      二進制一個熟悉又很陌生的東西,貌似如今的應用程序員用的真的不多,如今都用高級語言來開發程序,誰還用到二進制,八進制,十六進制,給個人感受那就是這些都是那些c,c++寫一些底層交互的程序員乾的事,向c,c++大神致敬,今天班門弄斧了,既然感到陌生,那咱們就來研究下這個東西,純屬我的興趣愛好而已。學習

2.什麼是二進制

     二進制是計算技術中普遍採用的一種數制二進制數據是用0和1兩個數碼來表示的數。它的基數爲2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個很是微小的開關,用「開」來表示1,「關」來表示0。spa

 

信息的存儲單位操作系統

位(Bit) :度量數據的最小單位設計

字節(Byte):最經常使用的基本單位,一個字節有8位htm

b7  b6 b5 b4 b3 b2 b1 b0blog

1    0   0  1   0   1   0   1  =27+24+22+20=149

K字節       1k=1024 byte

M(兆)字節  1M=1024K

G(吉)字節  1G=1024M

T(太)字節  1T=1024G

曾經聽人說,一個c,c++大神,就靠輸入,0和1就能夠裝好操做系統,不知道是否是真的,嘿嘿

3.十進制轉換

1234[10進制] 0 1 2 3 4 5 6 7 8 9 0 當數位上的值超過9就要進1

1000+200+30+4=1*103+2*102+3*101+4*100=1234

 

1011[2進制] 0 1 當數位上的值超過1就要進1

1*23+0*22+1*21+1*20=8+0+2+1=11

 

1011[8進制]0 1 2 3 4 5 6 7 當數位上的值超過7就要進1

1*83+1*81+1*80=512+8+1=521

 

1011[16進制]0 1 2 3 4 5 6 7 8 9 A B C D E F 當數位上的值超過15就要進1

1*163+1*161+1*160=4096+16+1=4113

 固然其餘進制轉換成10進制是最簡單的了,我想聰明的你確定會了。

4.二進制轉換

 首先來看十進制到二進制:除2取餘數 最後把餘數倒過來 100101

好比:十進制數37

 因此轉換成的二進制數字爲:100101

 

 再來八進制到二進制:一個八進制的位拆分紅一個三位的二進制數

好比:[八進制]616

      6拆分紅 110

     1拆分紅 001

     6拆分紅 110

因此轉換成的二進制數字爲:110001110

 

 再來十六進制到二進制:一個八進制的位拆分紅一個四位的二進制數

 好比:[十六進制]616

      6拆分紅 0110

     1拆分紅 0001

     6拆分紅 0110

因此轉換成的二進制數字爲:11000010110

5.八進制轉換

十進制到八進制:除8取餘數 最後把餘數倒過來

同時咱們也能夠先將十進制轉換成二進制,而後將二進制又轉換成八進制 

好比:2456 轉化成八進制數字:4630

2456/8=307,餘0;
307/8=38,餘3;
38/8=4,餘6;
4/8=0,餘4。
將全部餘數倒序相連,獲得結果:4630。
所以十進制的2456轉換爲八進制結果爲4630。

 

二進制到八進制轉換  7=4+2+1 111 八進制最大的數字是7轉換成二進制恰好是111,佔3個位

每三個二進制數爲一組,轉成一個八進制數位,若是二進制高位不足3位時,用零填補。

好比:10011011

      010 011 011

       2     3     3

所以二進制的10011011轉換爲八進制結果爲233。

 

 十六進制到八進制

 咱們能夠先把十六進制的數字轉換成二進制,在從二進制轉換成八進制例如: 

3BC24
分別對應到二進制就是:
3 0011
B 1011
C 1100
4 0100

連起來就是:
0011 1011 1100 0100

再按照每三個一組分組:
0 011 101 111 000 100

0__3__5__7__0__4
因此8進制就是35704

6.十六進制轉換

十進制到十六進制:除16倒着取餘數

同時咱們也能夠先將十進制轉換成二進制,而後將二進制又轉換成十六進制 

好比說:1610轉換成十六進制

直接轉16進制:
1610/16=100……10(A);
100 /16= 6……4;
6 /16= 0……6;

故:1610(10)=64A(16).

 

二進制到十六進制 15=8+4+2+1   1111 十六進制最大數字是F,即15轉換成二進制1111,恰好佔4個位

每四個二進制數爲一組,轉成一個十六進制數位,若是二進制高位不足3位時,用零填補。

好比:1110011011

        0011 1001 1011

          3       9      B

所以二進制的 1110011011轉換爲十六進制39B

 

八進制到十六進制

咱們能夠先把八進制的數字轉換成二進制,在從二進制轉換成十六進制

   八進制的:1234567

轉換爲二進制是每一個數字轉換爲三位二進制:001 010 011 100 101 110 111

而後把這些數字從右邊開始進行按四位分組:0 0101 0011 1001 0111 0111

而後從右邊每四位組依次對應一個16進制數:053977

7.各類進制的用途

說了這麼多,這些進制都有些什麼用了,你們一塊兒討論下吧!!!

10進制,固然是便於咱們人類來使用,咱們從小的習慣就是使用十進制,這個毋庸置疑。

2進制,是供計算機使用的,1,0表明開和關,有和無,機器只認識2進制。

16進制,內存地址空間是用16進制的數據表示, 如0x8049324。

編程中,咱們經常使用的仍是10進制。   

好比:int a = 100,b = 99;   

不過,因爲數據在計算機中的表示,最終以二進制的形式存在,因此有時候使用二進制,能夠更直觀地解決 問題。但二進制數太長了。好比int 類型佔用4個字節,32位。好比100,用int類型的二進制數表達將是:   

0000 0000 0000 0000 0110 0100   

面對這麼長的數進行思考或操做,沒有人會喜歡。所以,用16進制或8進制能夠解決這個問題。由於,進制越大,數的表達長度也就越短。

1.用於計算機領域的一種重要的數制   

2.對計算機理論的描述,計算機硬件電路的設計都是頗有益的。好比邏輯電路設計中,既要考慮功能的完備,還要考慮用盡量少的硬件,十六進制就能起到一些理論分析的做用。好比四位二進制電路,最多就是十六種狀態,也就是一種十六進制形式,只有這十六種狀態都被用上了或者儘量多的被用上,硬件資源才發揮了儘量大的做用。   

3.十六進制更簡短,由於換算的時候一位16進制數能夠頂4位2進制數。

8進制,通常有什麼用,查了下資料,還真不知道?有知道的大神告訴我吧。

若是你用過linux你可能見過這樣表示一個文件的權限:077七、0666等等
可能有的這樣解釋:具備讀權限加1,具備寫權限加2,具備執行權限加4,最後的和就是一個角色所具備的權限。而linux有三種角色:屬主、屬組、其餘用戶,因此用077七、0666之類的表示。
若是用二進制來看的話,linux用3個bit來表示權限,若是具備某個權限就把那位置1.好比只具備讀權限就是100,只具備寫權限就是010,具備讀寫權限就是110,具備讀寫執行權限就是111。

 8.結束

對於一個應用程序員,瞭解這些仍是有一些好處的,咱們如今開發都是一些高級語言,C#,Java,內存分配,垃圾的回收,都不用咱們本身操心,這樣咱們會有更多的時間去關注一些業務邏輯的處理。本人水平有限,文中若有什麼不妥,歡迎拍磚,大神就別看了,我寫此文章只是本身學習過程當中的一個總結,若是你以爲本文不錯,幫我點個贊!!!

 

相關文章
相關標籤/搜索