符號位擴展,數據截斷

數據類型轉換的時候,經常會進行符號位的擴展:

假設將一個整數從單字節的數據類型(char)轉換成雙字節的數據類型(short):

1. 如果該數是正數,即符號位是0,比如0x05, 多出來的8位全部填符號位0, 轉換後, 變成 0x0005, 十進制數值仍爲5,沒有改變;

2. 如果該數是負數,即符號位是1,比如 0x81, 多出來的8位全部填符號位1,轉換後,變成0xff81, 根據下面2的補碼的計算,轉變前後十進制數值都是-127.



如果反向轉換,比如從兩個字節轉換成一個字節表示,則是硬生生的把高位的8比特丟棄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章