java 中數據的強制轉換 和計算的補碼運算


#原碼 反碼 補碼的定義與運算 ##1原碼: 原碼是將十進制或者其他進制的數轉換為二進制表示(且要根據數據的類型轉換) 如:130 (默認是Int類型,則是4個字節) 原碼是:00000000 00000000 00000000 100000010
##2反碼: 1.當原碼是正數時,反碼就是原碼 2.當原碼是負數時,反碼是除了第一位的符號位以外的位數全部取反

##3補碼: 1.當原碼是正數時,反碼就是原碼 2.當原碼是負數時,補碼是反碼+1

#計算機操作中對數據的分析過程:

    計算機中的數據運算是用數據的補碼進行的,但是顯示出來是用數據的原碼,及原碼顯示,對補碼進行操作
    A: 獲取130的二進制原碼(數據默認是int類型)
        00000000 00000000  00000000 10000010

    B:對數據130的原碼取補碼進行截斷操作(130的補碼就是原碼),截成byte(1個字節8位)則變為 10000010

    C:將截斷得到的byte類型的補碼用原碼表示(計算機顯示是用原碼顯示)
         即是已知補碼求原碼
         反碼= 補碼-1  :反碼=1   0000010 - 1 = 1 0000001

         原碼=反碼取反(除去符號位以外的位) 原碼 = 1 1111110  
       
    D:  得到的顯示的數為   - 126

#byte值的問題

     byte 的范圍是 -128 ~ 127
     128 : 10000000
    -128 : 10000000 (這的1既是符號位,也是數值位)

     上接byte類型的強制轉換有byte b1 = 127;   //    OK
                                                byte b1 = byte(128); //需要強制轉換 得-128
                                                byte b1 = byte(129); //需要強制轉換 得-127
                                                byte b1 = byte(130); //需要強制轉換 得-126


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM