1. 程式人生 > >int型別轉換byte型別

int型別轉換byte型別

計算機中,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