天天看點

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即可,數值不變              * 此例子為一道常見面試題              */         }     }      

  

上一篇: 異或
下一篇: 看清區塊鍊

繼續閱讀