===========================================spa
******反碼和取反不一樣(區別:反碼符號位不變,取反符號位也變)******計算機
===========================================位運算
【~-5=4】
-5原碼:10000000 00000000 00000000 00000101
-5反碼:11111111 11111111 11111111 11111010
-5補碼(=反碼+1):11111111 11111111 11111111 11111011
-5補碼取反:00000000 00000000 00000000 00000100 (獲得結果爲補碼)
由於正數補碼=反碼=原碼,因此原碼也是:00000000 00000000 00000000 00000100
*注*:負數反碼爲符號位不變,其餘位取反;
負數補碼=反碼+1;
【-3^3=-2】
-3原碼:10000000 00000000 00000000 00000011
-3反碼:11111111 11111111 11111111 11111100
-3補碼:11111111 11111111 11111111 11111101
3補碼:00000000 00000000 00000000 00000011
------------------【(-3^3)補碼異或】--------------------
異或(補碼):11111111 11111111 11111111 11111110
異或(反碼=補碼-1):11111111 11111111 11111111 1111101
異或(原碼):10000000 00000000 00000000 00000010
【移位運算:都必須先求出補碼再移位運算(在計算機運算中,都是以補碼的方式運算的),溢出用符號位補全,符號位爲0,補0;符號位爲1,補1】
1>>2 == 0;
-1>>2 == -1;