java中二進位制、八進位制、十進位制、十六進位制的轉換

weixin_33762321發表於2018-10-12
public class HelloWorld {
    public static void main(String []args) {
        int a=-0b11;//0b開頭為二進位制數
        int b=-011;//0開頭為八進位制數
        int c=-11;//預設為十進位制數
        int d=-0x11;//0x開頭為十六進位制數
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);//以上預設輸出十進位制
        System.out.println(Integer.toBinaryString(d));//  二進位制
        System.out.println(Integer.toOctalString(d));//八進位制
        System.out.println(Integer.toHexString(d));//十進位制
        //注意:負數在非十進位制時輸出為補碼
    }
}

執行結果:


9078580-33dd9ab59e4799c0.png
image.png

然後簡單總結一下原碼、反碼和補碼:
正數:
原碼、反碼和補碼都相同
負數:
原碼:第一位為符號位,後面是數字位
反碼:符號位不變,其它各位取反
補碼:反碼+1(相當於符號位不變,數字位取反+1)

相關文章