java-整型數值 用 16進制轉換、2進制轉換-Integer.toHexString

  1. 負數爲何要用補碼錶示

    1. 能夠將符號位和其它位統一處理
    2. 減法也可按加法來處理
    3. 另外,兩個用補碼錶示的數相加時,若是最高位(符號位)有進位,則進位被捨棄
  2. 正數:原碼、反碼、補碼相同。
    負數:反碼符號位不變化,其他位數取反,補碼即爲反碼+1。
  3. 假設當前時針指向11點,而準確時間是8點,調整時間可有如下兩種撥法:
        一種是倒撥3小時,即:11-3=8
        另外一種是順撥9小時:11+9=12+8=8
        在以模爲12的系統中,加9和減3效果是同樣的,所以凡是減3運算,均可以用加9來代替。對「模」12而言,9和3互爲補數(兩者相加等於模)。因此咱們能夠得出一個結論,即在有模的計量系統中,減一個數等於加上它的補數,從而實現將減法運算轉化爲加法運算的目的。

  4. 爲了顯示一個byte型的單字節十六進制(兩位十六進制表示)的編碼,請使用:編碼

    Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6)spa

     byteVar & 0x000000FF的做用是,若是byteVar 是負數,則會清除前面24個零,正的byte整型不受影響。(...) | 0xFFFFFF00的做用是,若是byteVar 是正數,則置前24位爲一,這樣toHexString輸出一個小於等於15的byte整型的十六進制時,倒數第二位爲零且不會被丟棄,這樣能夠經過substring方法進行截取最後兩位便可。code

  5. System.out.println(Integer.toHexString(2));//2
    System.out.println(Integer.toHexString(15));//f
    System.out.println(Integer.toHexString(16));//10
    System.out.println(Integer.valueOf("F", 16));//16
    
    
    //負整數時,前面輸入了多餘的 FF ,沒有去掉前面多餘的 FF,按並雙字節形式輸出
    System.out.println(Integer.toHexString(-2).toUpperCase());//FFFFFFFE
     //實質上0xFF會像轉換成0x000000FF後再進行位運算
    System.out.println(Integer.toHexString(-2 & 0xFF).toUpperCase());//FE
    System.out.println(Integer.toHexString(-2 & 0x000000FF).toUpperCase());//FE

     

  6. //注,FE輸出時不會爲-2,由於此時不會把FE當作負數,valueOf會把全部數字串當作正的
    System.out.println(Integer.valueOf("FE", 16));//254
    //若是要輸出-2,只能按如下形式輸出
    System.out.println(Integer.valueOf("-2", 16));//-2
     //因此要把 FE 當作負的話,只能在前面加上負號,可是這裏輸出還不是-2,
    //而是先計算Integer.valueOf("FE", 16),再在結果前加上負
    System.out.println(Integer.valueOf("-FE", 16));//-254

     

  7. System.out.println(Integer.valueOf("-80", 16));//-128
    System.out.println(Integer.valueOf("7fffffff", 16));//2147483647
    //System.out.println(Integer.valueOf("80000000", 16));//不能運行,已注掉
    System.out.println(Integer.valueOf("-80000000", 16));//-2147483648

     

  8. System.out.println(Integer.toBinaryString(-2));//11111111111111111111111111111110
    System.out.println(Integer.toBinaryString(-2 & 0xFF));//11111110
    System.out.println(Integer.toBinaryString(-2 & 0x000000FF));//11111110
    System.out.println(Integer.valueOf("1111111111111111111111111111111", 2));//2147483647
    //System.out.println(Integer.valueOf("10000000000000000000000000000000", 2));
    System.out.println(Integer.valueOf("-10000000000000000000000000000000", 2));//-2147483648
    System.out.println(Integer.valueOf("11111110", 2));//254
    System.out.println(Integer.valueOf("-11111110", 2));//-254
相關文章
相關標籤/搜索