天天看點

補碼無符号數互換

無符号數補碼是本身

有符号數補碼是原碼按位取反再加1 

有符号數與無符号數互轉:

有符号數的補碼,無符号數的補碼

無符号數的補碼就是原碼本身

有符号數的補碼是有符号資料絕對值的原碼按位取反再加1 得到的就算有符号數的補碼

無符号資料既是無正負之分,所有的位都表示資料,無符号數轉換成有符号數,主要看 無符号數的最高有效位,有符号數的最高位為符号位,如果無符号數的最高有效位不為1既為0,則無符号數就是有符号數,如果無符号數的最高有效位為1 ,怎無符号數的補碼既原碼就是有符号數。

有符号數轉換成無符号數,如果有符号數的最高有效位不為1既為0 ,則有符号數之間就是無符号數,如果有符号數的最高有效位為1,則有符号資料的補碼既是無符号數

有符号數的補碼= 絕對值原碼按位取取反再+1 

補碼與無符号數,

補碼轉無符号數

t('s)2u  TMinw <= x <= TMaxw

一般補碼即有符号數的存儲範圍為 -2(w-1) - 1 ~ 2(w - 1);

無符号數的取值範圍為0 ~ 2(w) - 1

x => 0時, T2Uw(x) = x;

x < 0時,   T2Uw(x) = x + 2(w)

無符号轉換成補碼

對滿足0<= u <= UMaxw   u 的值是無符号資料的取值範圍

u2Tw(u) 

當u <= TMaxw(當無符号數小于等于補碼有符号數時)   無符号資料就是有符合數

當u > TMaxw當同位的 無符号數  比同位的 補碼有符合數的最大值大時,u - 2w