補碼經過運算,出現的進位,是必須舍棄的。
壹個補碼,必須取“約定的位數”,常用有八位、16 位數。。。
運算後,進位是 1 是 0,都不在“約定位數”中,所以是無用的。
-------------------------
在計算機中,借助於補碼,那麽,負數和減法,都可以轉化成加法來進行運算。
使用這種方法的目的就是:簡化計算機的硬件。
在計算機中,只有補碼,並沒有原碼和反碼。
補碼和負數,有壹壹對應的關系,可以直接轉換,並不需要通過原碼反碼。
那麽,“原碼反碼取反加壹”這些,都是垃圾知識,都是無用的。
-------------------------
計算機中所能計算的位數,是固定的,如八位機、16、32、64 位機。
位數限定之後,減去某個數,就可以用加上其補數,來完成。
如在兩位十進制中,減壹,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (壹百) 24
舍棄進位壹百,只取兩位,這兩個算法,結果就是相同的。
壹百,就是兩位十進制的計數周期:10^2。
99,就是-1 的補數。 求解公式: 補數 = 周期+負數。
上過中學的同學,都知道,三角函數的周期是:2π。
在-π/2 的函數值,與 +3π/2 ( =2π-π/2 ) 處相同。
那麽,-π/2,就可以用?+3π/2 來代替。
懂了這些,也就懂了補碼。
補碼,原理很簡單!扯出原碼反碼,只能說是故弄玄虛而已。
-------------------------
計算機用二進制,補數,就改稱:補碼。
八位二進制是 0000 0000 ~ 1111 1111(十進制255)。
其計數周期是:2^8 = 256。
那麽,[-1]補 = 256-1 = 255 = 1111 1111(二進制)。
如用“原碼反碼取反加壹”來做,也是這個結果。
求負數八位補碼的通用計算公式: 補碼 = 256 + 負數。
-------------------------
在八位補碼中,用 128~255 代表 128 個負數-128~-1。
而 0~127,這就是本來的正數,不需要任何轉換。
有人說“正數的原碼反碼補碼,都相同”,其實,這是誤導。
正數,其補碼都不存在,更別說計算機中不存在的原碼反碼了。
-------------------------
借助於補碼,負數和減法,都可以轉化成加法來進行運算。
那麽,計算機的硬件,就可以簡化了。
因此,計算機只有加法器,並沒有減法器。