~取反運算例子

原碼,反碼,補碼。爲什麼需要三種碼?計算機實際存儲的都是補碼。

因爲符號位!所以做加法直接用補碼相加,正數的反碼和補碼就是原碼本身。負數的反碼即字面意思,符號位不變,其他各位取反。負數的補碼是反碼+1。

還原:負數的反碼還原爲原碼很簡單,符號位不變,其他位取反。負數的補碼還原爲原碼爲:符號位不變,其他位取反再+1。即補碼的補碼就是原碼。

例:含符號位4位 mod8

-5的補碼是-3,-3的補碼是-5。因爲-5和3同餘:

-5 = -1×8 + 3

3 = 0×8 + 3

那麼計算5-5按照反碼計算爲0101+1010=1111,需要加1進位置0。

計算1-5按照補碼計算:0001+1011=1100,還原爲補碼,1100=-4。

~取反

取反是包括符號位都要取反。當然也是對補碼取反,因爲計算機存儲的負數都是補碼。

例:含符號位8位,mod128

-10 的原碼1000 1010,補碼1111 0110取反得0000 1001,求原碼0000 1001。即9

10的原碼0000 1010,補碼0000 1010取反得1111 0101,求原碼0000 1011。即-11

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