|
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001100000060 1、在(zài)FPGA甚至(zhì)計(jì)算機(jī)系(xì)統中(zhōng),所(suǒ)有(yǒu)數據(jù)的(de)保存方(fāng)式都是(shì)補碼形式的(de),
2、本(běn)視頻主(zhǔ)要(yào)講解(jiě)正(zhèng)數和(hé)負數的(de)補碼計(jì)算以(yǐ)及(jí)在(zài)數據(jù)電(diàn)路(lù)中(zhōng)的(de)处理方(fāng)式。
補碼的(de)由(yóu)来(lái)
FPGA实現(xiàn)各(gè)種(zhǒng)算法的(de)时(shí)候,首要(yào)的(de)就(jiù)是(shì)保證運算結果(guǒ)的(de)正(zhèng)确性(xìng),否則一(yī)切(qiè)毫(háo)无意(yì)義。 在(zài)分(fēn)析加加法運算符和(hé)減法運算符的(de)时(shí)候可(kě)以(yǐ)發(fà)現(xiàn)保存結果(guǒ)的(de)信(xìn)号(hào)位宽(kuān)是(shì)否合理对(duì)正(zhèng)确性(xìng)與(yǔ)否有(yǒu)很大的(de)影響。
例如(rú)下(xià)面(miàn)的(de)加法運算:
表(biǎo)1.3- 5加法運算結果(guǒ)
從上(shàng)表(biǎo)可(kě)以(yǐ)發(fà)現(xiàn),如(rú)果(guǒ)不(bù)保留進(jìn)位,當加法出(chū)現(xiàn)進(jìn)位的(de)时(shí)候計(jì)算的(de)結果(guǒ)是(shì)不(bù)正(zhèng)确的(de), 只(zhī)有(yǒu)保留了(le)進(jìn)位計(jì)算的(de)結果(guǒ)才是(shì)正(zhèng)确的(de)。由(yóu)此(cǐ)可(kě)以(yǐ)得出(chū)一(yī)个(gè)結論:使用(yòng)加法的(de)时(shí)候,为(wèi)了(le)保證結果(guǒ)的(de)正(zhèng)确性(xìng), 必須保存進(jìn)位,也(yě)就(jiù)是(shì)結果(guǒ)要(yào)擴展(zhǎn)位宽(kuān)。
例如(rú)两(liǎng)个(gè)8位的(de)數相加,則結果(guǒ)要(yào)擴展(zhǎn)一(yī)位,将位宽(kuān)設定(dìng)为(wèi)9位。
接着再来(lái)分(fēn)析一(yī)下(xià)減法運算,如(rú)下(xià)表(biǎo)所(suǒ)示例子:
表(biǎo)1.3- 6減法運算結果(guǒ)
注意(yì)表(biǎo)中(zhōng)和(hé)2’b00-2’b01,結果(guǒ)是(shì)2’b11,对(duì)應(yìng)的(de)十(shí)進(jìn)制值为(wèi)3,但期(qī)望的(de)結果(guǒ)是(shì)“-1”。 同(tóng)樣(yàng)的(de)道(dào)理,2’b01 - 2’b11,結果(guǒ)是(shì)2’b10,对(duì)應(yìng)的(de)十(shí)進(jìn)制值为(wèi)2,而(ér)期(qī)望的(de)結果(guǒ)是(shì)“-2”, 所(suǒ)以(yǐ)上(shàng)面(miàn)的(de)結果(guǒ)是(shì)不(bù)正(zhèng)确的(de)。 當期(qī)望結果(guǒ)中(zhōng)有(yǒu)正(zhèng)負之分(fēn)时(shí),可(kě)以(yǐ)通(tòng)过(guò)增加一(yī)个(gè)符号(hào)位来(lái)區(qū)别結果(guǒ)的(de)正(zhèng)負。業內(nèi)約定(dìng)的(de)表(biǎo)示方(fāng)法为(wèi), 最(zuì)高(gāo)位为(wèi)0时(shí)表(biǎo)示正(zhèng)數,最(zuì)高(gāo)位值为(wèi)1表(biǎo)示負數。符号(hào)位之後(hòu)的(de)數值用(yòng)低2位表(biǎo)示,結果(guǒ)如(rú)下(xià)表(biǎo):
表(biǎo)1.3- 7增加符号(hào)位的(de)減法運算結果(guǒ)
從上(shàng)表(biǎo)中(zhōng)可(kě)以(yǐ)看(kàn)出(chū)增加符号(hào)位後(hòu)還(huán)是(shì)会(huì)存在(zài)部(bù)分(fēn)運算結果(guǒ)與(yǔ)預期(qī)不(bù)符合的(de)問(wèn)題(tí)。 例如(rú)表(biǎo)中(zhōng)的(de)2’b00-2’b01,結果(guǒ)是(shì)3’b111,对(duì)應(yìng)的(de)十(shí)進(jìn)制值为(wèi)-3,但期(qī)望的(de)結果(guǒ)是(shì)“-1”。 所(suǒ)以(yǐ)上(shàng)面(miàn)的(de)結果(guǒ)仍然是(shì)不(bù)正(zhèng)确的(de)。
現(xiàn)在(zài),重(zhòng)新对(duì)二(èr)進(jìn)制數“000~111”進(jìn)行如(rú)下(xià)轉(zhuǎn)換:
a. 正(zhèng)數:保持(chí)不(bù)變(biàn)
b. 負數:符号(hào)位保持(chí)不(bù)變(biàn),數值取(qǔ)反(fǎn)加1。
也(yě)就(jiù)是(shì)说(shuō),如(rú)果(guǒ)是(shì)正(zhèng)數“+1”,之前(qián)是(shì)用(yòng)“001”表(biǎo)示,現(xiàn)在(zài)仍然是(shì)用(yòng)“001”表(biǎo)示。 如(rú)果(guǒ)是(shì)負數“-1”,之前(qián)是(shì)用(yòng)“101”表(biǎo)示,現(xiàn)在(zài)則是(shì)用(yòng)“111”表(biǎo)示。負數“-3”, 之前(qián)是(shì)用(yòng)“111”表(biǎo)示,現(xiàn)在(zài)則是(shì)用(yòng)“101”表(biǎo)示。这(zhè)種(zhǒng)表(biǎo)示方(fāng)式就(jiù)是(shì)補碼表(biǎo)示方(fāng)式。
改为(wèi)用(yòng)補碼来(lái)表(biǎo)示後(hòu),再来(lái)分(fēn)析下(xià)結果(guǒ):
表(biǎo)1.3- 8補碼表(biǎo)示減法運算結果(guǒ)
可(kě)以(yǐ)看(kàn)到(dào)上(shàng)表(biǎo)的(de)結果(guǒ)全(quán)部(bù)都是(shì)正(zhèng)确的(de),與(yǔ)預期(qī)全(quán)部(bù)一(yī)致(zhì)。这(zhè)一(yī)过(guò)程虽然完全(quán)沒(méi)有(yǒu)对(duì)代(dài)碼進(jìn)行任何改變(biàn), 但通(tòng)过(guò)更(gèng)改數據(jù)的(de)定(dìng)義就(jiù)实現(xiàn)了(le)正(zhèng)确的(de)結果(guǒ)。 在(zài)之前(qián)的(de)讨論中(zhōng),加數、被(bèi)加數、減數和(hé)被(bèi)減數的(de)運算过(guò)程都沒(méi)有(yǒu)使用(yòng)有(yǒu)符号(hào)數。 現(xiàn)在(zài)使用(yòng)有(yǒu)符号(hào)數的(de)補碼重(zhòng)新对(duì)其進(jìn)行表(biǎo)示。 假設加數、被(bèi)加數、減數和(hé)被(bèi)減數都是(shì)2位(範圍为(wèi)-2~1),考慮到(dào)進(jìn)位和(hé)借(jiè)位原因(yīn), 結果(guǒ)用(yòng)3位来(lái)表(biǎo)示(範圍为(wèi)-4~3)。因(yīn)为(wèi)結果(guǒ)位宽(kuān)變(biàn)为(wèi)3位,所(suǒ)以(yǐ)減數和(hé)被(bèi)減數都擴展(zhǎn)成(chéng)用(yòng)3位表(biǎo)示, 列出(chū)下(xià)表(biǎo):
表(biǎo)1.3- 9補碼表(biǎo)示運算結果(guǒ)
總(zǒng)結運算步驟如(rú)下(xià):
1. 根(gēn)據(jù)“人(rén)的(de)常識”,預計(jì)結果(guǒ)的(de)最(zuì)大最(zuì)小值,從而(ér)确定(dìng)結果(guǒ)的(de)信(xìn)号(hào)位宽(kuān)。
2. 将加數、減數等數據(jù),位宽(kuān)擴展(zhǎn)成(chéng)結果(guǒ)位宽(kuān)一(yī)致(zhì)。
3. 按二(èr)進(jìn)制加減法進(jìn)行計(jì)算。
通(tòng)过(guò)以(yǐ)上(shàng)方(fāng)式,得到(dào)的(de)就(jiù)是(shì)補碼的(de)結果(guǒ)。事(shì)实上(shàng),在(zài)FPGA甚至(zhì)計(jì)算機(jī)系(xì)統中(zhōng),
所(suǒ)有(yǒu)數據(jù)的(de)保存的(de)方(fāng)式都是(shì)補碼的(de)形式。如(rú)果(guǒ)读(dú)者(zhě)想(xiǎng)要(yào)了(le)解(jiě)更(gèng)多(duō)關(guān)于(yú)補碼的(de)內(nèi)容可(kě)以(yǐ)參閱相關(guān)資料。 相關(guān)視頻:https://www.bilibili.com/video/BV1yf4y1R7gH?p=14
|








