在Java中關於二進制、八進制、十六進制的辨析
阿新 • • 發佈:2018-10-05
整數 方法 pbe 可能 tin 大小寫 mil 8進制 integer 八進制數中不可能出7以上的阿拉伯數字。但如果這個數是123、是567,或12345670,那麽它是八進制數還是10進制數?單從數字的角度來講都有可能!
16進制數必須以 0x開頭。比如 0x1表示一個16進制數。而1則表示一個十進制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不區分大小寫。(註意:0x中的0是數字0,而不是字母O)
如int b = 1;int b=0x1;是同樣的含義,int b = 17;與int b = 0x11;表達的是同樣的值。
八進制
所以在Java中規定,一個數如果要指明它采用八進制,必須在它前面加上一個0,如:123是十進制,但0123則表示采用八進制。這就是八進制數的表達方法。 123如果是十進制的話是123,八進制的話,則是83,如在變量賦值時可以以十進制的方式賦值int a = 83; 也可以以八進制的方式賦值,int a= 0123;得到的是同樣的結果。十六進制
如果不使用特殊的書寫形式,16進制數也會和10進制相混。隨便一個數:9876,就看不出它是16進制或10進制。不區分正負
10進制數有正負之分,比如12表示正12,而-12表示負 12。但8進制和16進制只能用達無符號的正整數,如果你在代碼中裏:-078,或者寫:-0xF2,編譯器並不把它當成一個負數。
package com.lingyejun.blog; public class HexNum { public static void main(String[] args) { int a10 = 99; int a2 = 0b101; int a8 = 0143; int a16 = 0x63; System.out.println(a10); System.out.println(a2); System.out.println(a8); System.out.println(a16); int ma10 = -99; int ma2 = -0b101; int ma8 = -0143; int ma16 = -0x63; System.out.println(ma10); System.out.println(ma2); System.out.println(ma8); System.out.println(ma16); char c = ‘李‘; System.out.println("字母A在char中的編號" + Integer.toString(‘A‘) + " " + Integer.toBinaryString(‘A‘)); System.out.println("字母a在char中的編號" + Integer.toString(‘a‘)); System.out.println("char 字符 李 用二進制表示為 :" + Integer.toBinaryString(c)); System.out.println("char 字符 李 用八進制表示為 :" + Integer.toOctalString(c)); System.out.println("char 字符 李 用十六進制表示為 :" + Integer.toHexString(c)); } }
執行結果:
在Java中關於二進制、八進制、十六進制的辨析