補碼

補碼html

一、補碼的表示方法是:spa

  正數的補碼就是其自己htm

  負數的補碼是在其原碼的基礎上, 符號位不變, 其他各位取反, 最後+1. (即在反碼的基礎上+1)blog

  

二、爲什麼要使用補碼.get

  補碼將減法問題轉化爲了加法問題。使用同餘原理,巧妙地將符計算也藏了進去。基礎

  按位取反的本質:以 Signed Byte 的前7位爲例,對x按位取反,得的值爲 127-x。例如,1,前7位按位取反,會獲得 127-1=126。變量

  補碼爲按位取反,且+1。還有 Signed Byte 爲例,例如,1,前7位按位取反,會獲得 127-1=126,+1後爲127。原理

  因此,Signed Byte下,-1的補碼,符號位爲1,其他7位爲FFF|FFFF。方法

  那如何由補碼求得原值呢,對 FFF|FFFF按位取反,其值爲 127-FFF|FFFF=0,再加上1,就等於原值1。im

  能夠發現,原值=>補碼的過程當中須要加1,補碼=>原值的過程當中也須要加1。以變量來推一下。

  原值 x,補碼爲 127-x+1。

  原值 127-x+1,按位取反爲 127-(127-x+1) = (127+127+x-1)%127 = x-1。比原值x少了1。

     因此從補碼值域獲得原值,須要按位取反再+1。

參考:

一、https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

二、https://www.cnblogs.com/dyllove98/archive/2013/08/04/3236802.html

相關文章
相關標籤/搜索