~取反运算例子

原码,反码,补码。为什么需要三种码?计算机实际存储的都是补码。

因为符号位!所以做加法直接用补码相加,正数的反码和补码就是原码本身。负数的反码即字面意思,符号位不变,其他各位取反。负数的补码是反码+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

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