Java中8進位制和16進位制的表示方法

wjaning發表於2021-09-09

由於資料在計算機中的表示,最終以二進位制的形式存在,所以有時候使用二進位制,可以更直觀地解決問題。
但,二進位制數太長了。比如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進位制數的表達方式。最後一點很重要,10進位制數有正負之分,比如12表示正12,而-12表示負 12,;但8進位制和16進位制只能用達無符號的正整數,如果你在程式碼中裡:-078,或者寫:-0xF2,編譯器並不把它當成一個負數。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2807469/,如需轉載,請註明出處,否則將追究法律責任。

相關文章