int型別轉換byte型別
阿新 • • 發佈:2018-12-24
計算機中,int型別佔用4個位元組,byte型別佔用1個位元組;
當int型別強轉為byte型別時,計算機會擷取最後的八位(1個位元組);
由於計算機儲存資料時,都是以補碼的形式進行儲存。
然而,我們通常看到的數卻是計算機儲存的補碼先轉換成反碼,後轉換成原碼,再轉換成十進位制呈現的。
原碼、反碼與補碼的關係:
正數: 原碼 = 反碼 = 補碼
負數: 原碼取反 = 反碼(符號位不變); 反碼 + 1 = 補碼
舉例:
int a = 128,轉換成二進位制形式是0000 0000 0000 0000 0000 0000 1000 0000,
由於正數的原碼=反碼=補碼,因此計算機儲存的是0000 0000 0000 0000 0000 0000 1000 0000。
int a = -128,轉換成二進位制形式是1000 0000 0000 0000 0000 0000 1000 0000,
由於負數的原碼、反碼與補碼的轉換關係是:原碼取反=反碼(符號位不變),反碼+1=補碼;
反碼:1111 1111 1111 1111 1111 1111 0111 1111
補碼:1111 1111 1111 1111 1111 1111 1000 0000
因此,在計算機中儲存的是1111 1111 1111 1111 1111 1111 1000 0000