算術(shù)運算符補碼由來
需要看對應(yīng)的視頻,請點擊視頻編號:001100000060
1、在FPGA甚至計算機系統(tǒng)中,所有數(shù)據(jù)的保存方式都是補碼形式的,
2、本視頻主要講解正數(shù)和負(fù)數(shù)的補碼計算以及在數(shù)據(jù)電路中的處理方式。
3、這是ALTERA和VIVADO視頻
補碼的由來
FPGA實現(xiàn)各種算法的時候,首要的就是保證運算結(jié)果的正確性,否則一切毫無意義。
在分析加加法運算符和減法運算符的時候可以發(fā)現(xiàn)保存結(jié)果的信號位寬是否合理對正確性與否有很大的影響。
例如下面的加法運算:
表1.3- 5加法運算結(jié)果

從上表可以發(fā)現(xiàn),如果不保留進(jìn)位,當(dāng)加法出現(xiàn)進(jìn)位的時候計算的結(jié)果是不正確的,
只有保留了進(jìn)位計算的結(jié)果才是正確的。由此可以得出一個結(jié)論:使用加法的時候,為了保證結(jié)果的正確性,
必須保存進(jìn)位,也就是結(jié)果要擴展位寬。
例如兩個8位的數(shù)相加,則結(jié)果要擴展一位,將位寬設(shè)定為9位。

接著再來分析一下減法運算,如下表所示例子:
表1.3- 6減法運算結(jié)果

注意表中和2’b00-2’b01,結(jié)果是2’b11,對應(yīng)的十進(jìn)制值為3,但期望的結(jié)果是“-1”。
同樣的道理,2’b01 - 2’b11,結(jié)果是2’b10,對應(yīng)的十進(jìn)制值為2,而期望的結(jié)果是“-2”,
所以上面的結(jié)果是不正確的。
當(dāng)期望結(jié)果中有正負(fù)之分時,可以通過增加一個符號位來區(qū)別結(jié)果的正負(fù)。業(yè)內(nèi)約定的表示方法為,
最高位為0時表示正數(shù),最高位值為1表示負(fù)數(shù)。符號位之后的數(shù)值用低2位表示,結(jié)果如下表:
表1.3- 7增加符號位的減法運算結(jié)果

從上表中可以看出增加符號位后還是會存在部分運算結(jié)果與預(yù)期不符合的問題。
例如表中的2’b00-2’b01,結(jié)果是3’b111,對應(yīng)的十進(jìn)制值為-3,但期望的結(jié)果是“-1”。
所以上面的結(jié)果仍然是不正確的。
現(xiàn)在,重新對二進(jìn)制數(shù)“000~111”進(jìn)行如下轉(zhuǎn)換:
a.? ?? ? 正數(shù):保持不變
b.? ?? ?負(fù)數(shù):符號位保持不變,數(shù)值取反加1。
也就是說,如果是正數(shù)“+1”,之前是用“001”表示,現(xiàn)在仍然是用“001”表示。
如果是負(fù)數(shù)“-1”,之前是用“101”表示,現(xiàn)在則是用“111”表示。負(fù)數(shù)“-3”,
之前是用“111”表示,現(xiàn)在則是用“101”表示。這種表示方式就是補碼表示方式。
改為用補碼來表示后,再來分析下結(jié)果:
表1.3- 8補碼表示減法運算結(jié)果

可以看到上表的結(jié)果全部都是正確的,與預(yù)期全部一致。這一過程雖然完全沒有對代碼進(jìn)行任何改變,
但通過更改數(shù)據(jù)的定義就實現(xiàn)了正確的結(jié)果。
在之前的討論中,加數(shù)、被加數(shù)、減數(shù)和被減數(shù)的運算過程都沒有使用有符號數(shù)。
現(xiàn)在使用有符號數(shù)的補碼重新對其進(jìn)行表示。
假設(shè)加數(shù)、被加數(shù)、減數(shù)和被減數(shù)都是2位(范圍為-2~1),考慮到進(jìn)位和借位原因,
結(jié)果用3位來表示(范圍為-4~3)。因為結(jié)果位寬變?yōu)?位,所以減數(shù)和被減數(shù)都擴展成用3位表示,
列出下表:
表1.3- 9補碼表示運算結(jié)果

總結(jié)運算步驟如下:
1.?根據(jù)“人的常識”,預(yù)計結(jié)果的最大最小值,從而確定結(jié)果的信號位寬。
2.?將加數(shù)、減數(shù)等數(shù)據(jù),位寬擴展成結(jié)果位寬一致。
3.?按二進(jìn)制加減法進(jìn)行計算。
通過以上方式,得到的就是補碼的結(jié)果。事實上,在FPGA甚至計算機系統(tǒng)中,
所有數(shù)據(jù)的保存的方式都是補碼的形式。如果讀者想要了解更多關(guān)于補碼的內(nèi)容可以參閱相關(guān)資料。
相關(guān)視頻:https://www.bilibili.com/video/BV1yf4y1R7gH?p=14
相關(guān)視頻:https://www.bilibili.com/video/BV1yf4y1R7gH?p=14