八進制算法

八進制算法,即八進制數的表達方法int a = 100。

基本介紹

  • 中文名:八進制算法
  • 外文名:bajinzhisuanfa
簡介,作用,

簡介

八進制數的表達方法
int a = 100;
我們也可以這樣寫:
在8086/8088彙編語言中 八進制表示為結尾加Q
如:121Q,333Q
6.2.4 八進制數在轉義符中的使用
我們學過用一個轉義符'\'加上一個特殊字母來表示某個字元的方法。

作用

編程中,我們常用的還是10進制……畢竟C/C++是高級語言。
比如:
int a = 100,b = 99;
不過,由於數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。
但,二進制數太長了。比如int 類型占用4個位元組,32位。比如100,用int類型的二進制數表達將是:
0000 0000 0000 0000 0110 0100
面對這么長的數進行思考或操作,沒有人會喜歡。因此,C,C++ 沒有提供在代碼直接寫二進制數的方法。
八進制數轉換為十進制數八進制就是逢8進1。
八進制數採用 0~7這八數來表達一個數。
八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……
所以,設有一個八進制數:1507,轉換為十進制為:
用豎式表示:
1507換算成十進制。
第0位,即: 7 * 8^0 = 7
第1位,即: 0 * 8^1 = 0
第2位,即: 5 * 8^2 = 320
第3位,即: 1 * 8^3 = 512
----------------------------------------
+ 839
同樣,我們也可以用橫式直接計算:
7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3=839
結果是,八進制數 1507 轉換成十進制數為 839
八進制數的表達方法C,C++語言中,如何表達一個八進制數呢?如果這個數是 876,我們可以斷定它不是八進制數,因為八進制數中不可能出7以上的阿拉伯數字。但如果這個數是123、是567,或12345670,那么它是八進制數還是10進制數,都有可能。
所以,C,C++規定,一個數如果要指明它採用八進制,必須在它前面加上一個0,如:123是十進制,但0123則表示採用八進制。這就是八進制數在C、C++中的表達方法。
由於C和C++都沒有提供二進制數的表達方法,所以,這裡所學的八進制是我們學習的,CtC++語言的數值表達的第二種進制法。
對於同樣一個數,比如是100,我們在代碼中可以用平常的10進制表達,例如在變數初始化時:
int a = 100;
我們也可以這樣寫:
int a = 0144; //0144是八進制的100;一個10進制數如何轉成8進制,我們後面會學到。
千萬記住,用八進制表達時,你不能少了最前的那個0。否則計算機會通通當成10進制。不過,有一個地方使用八進制數時,卻不能使用加0,那就是我們前面學的用於表達字元的“轉義符”表達法。
在8086/8088彙編語言中 八進制表示為結尾加Q
如:121Q,333Q
八進制數在轉義符中的使用我們學過用一個轉義符'\'加上一個特殊字母來表示某個字元的方法,如:'\n'表示換行(line),而'\t'表示Tab字元,'\''則表示單引號。今天我們又學習了一種使用轉義符的方法:轉義符'\'後面接一個八進制數,用於表示ASCII碼等於該值的字元。
比如,查一下第5章中的ASCII碼錶,我們找到問號字元(?)的ASCII值是63,那么我們可以把它轉換為八進值:77,然後用 '\77'來表示'?'。由於是八進制,所以本應寫成 '\077',但因為C,C++規定不允許使用斜槓加10進制數來表示字元,所以這裡的0可以不寫。
事實上我們很少在實際編程中非要用轉義符加八進制數來表示一個字元,所以,6.2.4小節的內容,大家僅僅了解就行。
用16進制或8進制可以解決這個問題。因為,進制越大,數的表達長度也就越短。不過,為什麼偏偏是16或8進制,而不其它的,諸如9或20進制呢?
2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進制之間可以非常直接地互相轉換。8進制或16進制縮短了二進制數,但保持了二進制數的表達特點。在下面的關於進制轉換的課程中,你可以發現這一點。

相關詞條

熱門詞條

聯絡我們