int類型129轉byte類型得到-127的解釋


package com.yygc.zhen.codeing_base;

/**
 * @author zhen
 * @Date 2019/2/22 10:03
 * 類型轉換
 */
public class TypeTrans {
    public static void main(String[] args) {
        byte bs = (byte)129;
        System.out.println(bs);
        int x = -0101;
        System.out.println(x);
        /**
         * 操作手法:
         *  所見:二進制表示、十進制表示、十六進制表示等,正負使用正負號 + -
         *  計算機內:
         *     原碼:計算機中對數字的二進制定點表示方法,原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正書該位為0,負數該位為1,其余位表示數值的大小,0有兩種表示:+0 和 -0
         *     反碼:反碼是數值存儲的一種,多應用於系統環境設置,反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外
         *     補碼:在計算機系統中,數值一律用補碼來表示和存儲,補碼表示法規定:正數的補碼與其原碼相同,負數的補碼是在其反碼的末位加1
         *     129 int類型(4個字節)二進制: 00000000 00000000 00000000 10000001
         *     存儲用補碼:
         *      正數的補碼與其原碼相同: 00000000 00000000 00000000 10000001
         *     int -> byte(1個字節),截取: 10000001
         *     補碼轉反碼:1開始則為負數,負數得到反碼是末位-1: 10000000
         *     反碼轉原碼:逐位取反,符號位除外 11111111
         *     原碼轉二進制:符號位提取,替換為0 -01111111
         *     二進制轉十進制:-2^7 -1 = -127
         *
         * 低位轉高位就不用看了,前面的存儲位置補足0即可,數值不變
         * 此例子為一道常見面試題
         * 參考:https://blog.csdn.net/weixin_38701432/article/details/79474277
         */
    }
}

  


免責聲明!

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



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