首先,先明確進制中的兩個基本概念。
基:二進制的基爲二,八進制的基爲八,十進制的基爲十,十六進制的基爲十六,以此類推。
位權:以小數點開始,依次向左右兩邊編號,向左爲0,1,2,…,向右爲-1,-2,-3,…。以二進制爲例,從小數點開始,向左位權依次 爲20,21,22,向右依次爲2-1,2-2,其他進制以此類推。
二進制,八進制,十六進制轉換爲十進制:按權相加法,即將該進制數的每一位乘以位權,然後相加,和即爲該進制對應的十 ,進制。例如:
1010100(2)=1*26+1*24+1*22=84
FFFF(16)=F*163+F*162+F*161+F*160=65535
整數部分:除基取餘法,即用目標數制的基數去除十進制數,取餘,將所得商再除以基數,直到商爲“0”,所得餘數逆序即爲該數的目標進制。
小數部分:乘基取整法,即小數部分乘以目標數制的基數,取整,將其小數部分再乘基數,直到小數部分爲“0”,或滿足要求的精度爲止。(通常情況下都是算出滿足要求的精度)。
例如:12.75(2)=1100.11
二進制轉換成八進制:三位一體法,以小數點開始,向左右兩邊每三位一組,不足的話,在整數部分最高位前以及小數部分最 低位後補"0",即表現爲該進制數首尾補零至小數點兩邊的位數都是三的倍數(注意無需補冗餘的"0")。
例如:11.0100111(2)=011.010011100(2)=3.234(8)
二進制轉換爲十六進制:四位一體法,以小數點開始,向左右兩邊每四位一組,不足的話,在整數部分最高位前以及小數部分 最低位後補"0",即表現爲該進制數首尾補零至小數點兩邊的位數都是四的倍數(注意無需補冗餘的"0")。
例如:110.111010(2)=0110.11101000(2)=6.E8(16)
八進制轉換成二進制:取一分三法,即將該進制數的每個位上的數看成是一個(一位)十進制數,除二取餘轉換成一個三位二進 制數,順序即是。
例如:62.54(8)=6,2,.5,4(10)=110,010,.101,100(2)=110010.101100(2)=110010.1011(2)
十六進制轉換成二進制:取一分四法,即將該進制數的每個位上的數看成是一個(一位)十進制數,除二取餘轉換成一個四位二 進制數,順序即是。
例如:1E.23(16)=1,E,.2,3(16)=0001,1110,.0010,0011(2)=00011110.00100011(2)=11110.00100011(2)
八進制轉換成十六進制或十六進制轉換成八進制:間接法,以二進制爲媒介,將八進制(十六進制)轉換成二進制,再由二進 制轉換成十六進制(八進制)。
下面我們來考慮負數時的情形。由於任何數在內存中都是以二進制補碼形式存在的,而正數的補碼等於原碼,負數的補碼是其 對應的正數的反碼加一。舉例說明,如將-152(10)轉換成八進制,-152(10)=
-152
對應的正數:152,二進制原碼:10011000,反碼:01100111,反碼加一:01101000
即-152的二進制表示爲01101000(2),採用三位一體法,得其對應的八進制爲150(8)。