補碼(Two's complement),是有符號數的壹種二進制表示方式。
我們用B2Tw來表示壹個補碼。其中w代表二進制數的位長,B2T的含義其實是“二進制轉補碼”。
計算補碼實際表示的數,我們需要將每壹位上的值和對應權重相乘然後進行相加。每壹位(索引記為i,從0開始,從右往左遞增)的權重為2i,但最高位的權重比較特殊,需要取負數,為-2w-1。
補碼表示的最大值和最小值
對於壹個位長為w的補碼表示,最大值TMaxw為2^(w-1) - 1,此時最高位為0,其余位都是1。最小值TMinw為-2^(w-1),此時最高位為1,其余位都是0。
如對於4位的補碼,最大值TMax4 = B2T4(),對應的值為2^3 - 1 = 7,最小值為B2T4(),對應的值為-2^3 = -8。