簡介
Octal,縮寫OCT或O,一種以8為基數的計數法,採用0,1,2,3,4,5,6,7八個數字,逢八進1。一些程式語言中常常以數字0開始表明該數字是八進制。八進制的數和二進制數可以按位對應(八進制一位對應二進制三位),因此常套用在計算機語言中。
八進制(基數為8)表示法在計算機系統中很常見,因此,我們有時能看到人們使用八進制表示法。由於十六進制一位可以對應4位二進制數字,用十六進制來表示二進制較為方便。因此,八進制的套用不如十六進制。有一些程式設計語言提供了使用八進制符號來表示數字的能力,而且還是有一些比較古老的Unix套用在使用八進制。
轉換
二進制與八進制的互相轉換和二進制與十六進制的轉換類似,區別在於需要操作的是三位一組而不是四位。表2-2列出了二進制與八進制的等效表示。
為了把八進制數換算為二進制,將每一個八進制數字替換成表2-2中對應的三位。例如,八進制123q換算成二進制的結果就是%0_0101_0011:
1 | 2 | 3 |
001 | 010 | 011 |
表2-2 二進制/八進制換算表
二進制 | 八進制 |
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
為了將一個二進制數換算為八進制,只需將二進制串劃分成每三個位一組(如果需要的話,在前面補零),然後查表2-2,將三位一組的位串替換為相應的八進制數字即可。
如果需要將八進制數換算為十六進制,只需將八進制數換算為二進制,然後再換算為十六進制即可。
八進制化為十進制:
例:將八進制數12.6轉換成十進制數
(12.6)8 = 1×8^1 + 2×8^0 + 6×8^-1 = (10.75)10
八進制化為二進制:
規則:按照順序,每1位八進制數改寫成等值的3位二進制數,次序不變。
例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)2
八進制化為十六進制
先將八進制化為二進制,再將二進制化為十六進制。
例:(712)8 = (1110 0101 0)2 = (1CA)16
轉換為八進制
二進制化為八進制:
整數部份從最低有效位開始,以3位一組,最高有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的整數。
小數部份從最高有效位開始,以3位一組,最低有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的小數。
例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8
十六進制化為八進制:
先用1化4方法,將十六進制化為二進制;再用3並1方法,將二進制化為8制。
例: (1CA)16 = (111001010)2 = (712)8
說明:小數點前的高位零和小數點後的低位零可以去除。
十進制化八進制
方法1:採用除8取余法。
例:將十進制數115轉化為八進制數
8| 115…… 3
8| 14 …… 6
8| 1 …… 1
結果:(115)10 = (163)8
方法2:先採用十進制化二進制的方法,再將二進制數化為八進制數
例:(115)10 = (1110011)2 = (163)8
笑話
Oct(Octal number) 31 == Dec(Decimal number) 25
在西方國家,oct(31)即10月31日是萬聖節,dec(25)即12月25日是聖誕節,因此有一個笑話:程式設計師分不清聖誕節和萬聖節。