天天看點

c++十進制轉二進制_八進制轉換成十進制,十進制轉換成八進制

先來看八進制如何轉換成十進制。其方法與二進制轉換成十進制差不多:按權相加法,即将八進制每位上的數乘以位權(如8,64,512….),然後将得出來的數再加在一起。

如将72.45轉換為十進制。如圖1所示

c++十進制轉二進制_八進制轉換成十進制,十進制轉換成八進制

來看看十進制轉八進制,有兩種方法:直接法與間接法,先看直接的方法,與十進制轉成二進制相同,咱們還是分整數部分轉換和小數部分轉換。

整數部分,除8取餘法,每次将整數部分除以8,餘數為該位權上的數,商繼續除以8,餘數又為上一個位權上的數,然後以此類推一直下去,直到商為零,最後從最後一個餘數向前排列就可以了,嗨,還是上圖直覺,如圖2所示。

c++十進制轉二進制_八進制轉換成十進制,十進制轉換成八進制

再看小數部分,與轉二進制相同,這裡是乘八取整法,也就是說小數部分乘以8,然後取整數部分,再讓剩下的小數部分再乘以8,再取整數部分,……以此類推,一直乘到小數部分為零為止。例如0.13856,如圖3所示。

c++十進制轉二進制_八進制轉換成十進制,十進制轉換成八進制

小數部分乘以8,如果永遠也碰不到零該怎麼辦?如圖4所示(假設示範哦),那就根據位數要求進行“3舍4入”吧。

c++十進制轉二進制_八進制轉換成十進制,十進制轉換成八進制

這個是直接的方法,還有一個間接的方法捏?就是先把十進制轉換為二進制,然後再由二進制轉換為8進制,例如将十進制478.0245轉為八進制。

先轉為二進制為(轉換方法這裡就不再累述了哦,不知道的看上期介紹吧):

(478.125)10=(111011110.001)2

二進制再轉為八進制為(轉換方法這裡就不再累述了哦,不知道的看上期介紹吧):

(111011110.001)2=(736.1)8

注意事項:

八進制轉十進制:整體順序、小數點不變,個位乘8的0次方+十位乘8的1次方...=十進制得數,即可。小數部分從左到右乘8的負一次方開始,以此類推。

十進制轉八進制:整體順序、小數點不變,整數部分除8,餘數倒着從左向右排,小數部分乘8,整數自左向右排。