由於數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。
但,二進制數太長了。比如int 類型占用4個字節,32位。比如100,用int類型的二進制數表達將是:
0000 0000 0000 0000 0110 0100
面對這么長的數進行思考或操作,沒有人會喜歡。因此,C,C++,以及java中 沒有提供在代碼直接寫二進制數的方法。
八進制數的表達方法
如何表達一個八進制數呢?如果這個數是 876,我們可以斷定它不是八進制數,因為八進制數中不可能出7以上的阿拉伯數字。但如果這個數是123、是567,或12345670,那么它是八進制數還是10進制數,都有可能。
所以規定,一個數如果要指明它采用八進制,必須在它前面加上一個0(零),如:123是十進制,但0123則表示采用八進制。這就是八進制數的表達方法。
現在,對於同樣一個數,比如是100,我們在代碼中可以用平常的10進制表達,例如在變量初始化時:
int a = 100;
我們也可以這樣寫:
int a = 0144; //0144是八進制的100;一個10進制數如何轉成8進制,我們后面會學到。
千萬記住,用八進制表達時,你不能少了最前的那個0。否則計算機會通通當成10進制。不過,有一個地方使用八進制數時,卻不能使用加0,那就是我們前面學的用於表達字符的“轉義符”表達法。
十六進制數的表達方法
如果不使用特殊的書寫形式,16進制數也會和10進制相混。隨便一個數:9876,就看不出它是16進制或10進制。
16進制數必須以 0x開頭。比如 0x1表示一個16進制數。而1則表示一個十進制。另外如:0xff,0xFF,0X102A,等等。其中的x也不區分大小寫。(注意:0x中的0是數字0,而不是字母O)
以下是一些用法示例:
int a = 0x100F;
int b = 0x70 + a;
至此,我們學完了所有進制:10進制,8進制,16進制數的表達方式。