位運算

===========================================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;

相關文章
相關標籤/搜索