1. 程式人生 > >在Java中關於二進制、八進制、十六進制的辨析

在Java中關於二進制、八進制、十六進制的辨析

整數 方法 pbe 可能 tin 大小寫 mil 8進制 integer

八進制數中不可能出7以上的阿拉伯數字。但如果這個數是123、是567,或12345670,那麽它是八進制數還是10進制數?單從數字的角度來講都有可能!

八進制

所以在Java中規定,一個數如果要指明它采用八進制,必須在它前面加上一個0,如:123是十進制,但0123則表示采用八進制。這就是八進制數的表達方法。 123如果是十進制的話是123,八進制的話,則是83,如在變量賦值時可以以十進制的方式賦值int a = 83; 也可以以八進制的方式賦值,int a= 0123;得到的是同樣的結果。

十六進制

如果不使用特殊的書寫形式,16進制數也會和10進制相混。隨便一個數:9876,就看不出它是16進制或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;表達的是同樣的值。

不區分正負

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中關於二進制、八進制、十六進制的辨析