在編程工做種,咱們時常須要對不一樣的進制的數進行轉換,以方便咱們的工做、閱讀和理解。在計算機領域,主要設計二進制、八進制、十進制和十六進制,下面咱們就來說講這四種機制的整數相互轉換方法。程序員
1、查表法編程
就是咱們製做一張包含各類進制的值一 一對應數值表,須要時查表就得,可是,咱們知道,這不太現實,由於數是無窮的,咱們不可能作一張無窮的表。在次可是,這也不是說查表法就不用了,其實咱們一直在使用,你可能會說,沒有,沒見過,不對,有的,就在你的腦海裏,我相信絕大部分程序員都有,好比,問你,(15)10對應的十六進制是多少,你確定張口就答(F)16,爲何你能很快答出,是由於咱們在平常工做和學習中,無形在腦海裏創建了這張表。只是這張表頗有限,更大的數你就不能一口答了,因此須要其餘的轉換方法,可是其餘方法會用到查表法。學習
咱們至少要創建起以下的一張表spa
2、短除法設計
短除法運算方法是先用一個除數除以能被它除盡的一個質數,以此類推,除到商是質數爲止。具體在咱們的進制換算裏,當一個M進制數轉N進制數時,就是用這個數除N取餘,逆序排列。具體作法是:將N做爲除數,用M進制整數除以N,能夠獲得一個商和餘數;保留餘數,用商繼續除以N,又獲得一個新的商和餘數;仍然保留餘數,用商繼續除以N,還會獲得一個新的商和餘數;如此反覆進行,每次都保留餘數,用商接着除以N,直到商爲0時爲止blog
下面舉例:二進制
結果,(756)8--->(1EE)16程序
二進制轉其餘進制和十六進制轉其餘進制我就不一一舉例了,經過上面的例子,咱們能夠看到用短除法咱們是能夠進行任意進制的相互轉換的,同時咱們也能夠發現,將高進制向低進制(只限於這幾種進制,咱們姑且認爲高低順序爲:二進制<八進制<十進制<十六進制)轉換時,要先有一步進制基數的查表換算過程,在加上咱們人對2、8、十六進制的四則運算不熟悉,因此這三種進制進行短除法換算比較困難。因爲十進制的基數自己就是十六進制的數碼,同時表明的量意義也同樣,因此總的來講,短除法特別適合十進制向2、8、十六進制的轉換。3、位權相加法方法
咱們知道,任何進制的數都是由:位、數碼、位權等要素構成,這也爲咱們進制間的轉換提供了一種方法:位權相加法。假設當前數字是N進制,那麼:對於整數,從右往左看,第i位的位權等於Ni-1。更加通俗的理解是,假設一個多位數(由多個數字組成的數)某位上的數字是1,那麼它所表示的數值大小就是該位的位權。當咱們由M進制轉爲N進制時要進行這樣的運算:a*Ni-1+aNi-2+...+a*N1+a*N0。im
下面舉例:
咱們能夠看到,位權相加法特別適合2、8、十六進制轉十進制,對其它狀況則很困難,好比二進制轉8、十六進制時先用了合位法,特別是高進制轉低進制更是困難。
4、拆位拼接法
因爲二進制、八進制和十六進制的基數有着這樣的關係:8=23,16=24,也就十說一位八進制數等於3位二進制數,一位十六進制數等於4位二進制數,因此有以下轉換方法。
5、借橋法
對某些困難的狀況,咱們能夠先轉位十進制或二進制,而後在轉爲對應的進制,我成爲借橋法,中間的進制就是橋。好比十六進制轉八進制,咱們能夠先用位權相加法轉爲十進制,在用短除法轉爲八進制。這就不舉例了。
6、總結