int型別轉換byte型別

2021-10-23 21:44:59 字數 1060 閱讀 7528

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

int a = 128;

byte b = (byte) a; // b=-128

首先,由上述第乙個例子得知,128在計算機中儲存的補碼形式為0000 0000 0000 0000 0000 0000 1000 0000,

此時強制轉換成byte型別的資料時,計算機會自動擷取最後的八位(1個位元組)1000 0000,

補碼最高位為1得知,轉換後的資料是乙個負數

根據負數補碼求反碼,我們可以得到該數的反碼是1111 1111,

根據負數反碼求原碼,可得到該數的原碼是1000 0000

型別轉換函式int

型別轉換函式int include include include using namespace std class binary for i 0 i 16 len i bits i 0 binary int a 整型引數建構函式 friend binary operator binary bin...

int與string型別轉換

int型別到string型別的轉換在程式設計中經常用到,每次都是忘了就查,然後還記不住,今天索性總結一次。int型別轉string型別的方法目前我總結出了三種,如下所示 1 使用itoa include include using namespace std int main 注意這種方法在code...

micropython進行int型別轉換

方法一 基於數字的大小比較 to int16 dec lambda x 32768 x if x 32768 else x to int16 dec 32769 1方法二 基於最高位是否為負號位 1 to int16 lambda x x 0x7fff if x 0x8000 else x to i...