運(yùn)算結(jié)果可能產(chǎn)生溢出的是 在定點(diǎn)機(jī)中執(zhí)行算術(shù)運(yùn)算時(shí)會(huì)產(chǎn)生溢出,原因?
在定點(diǎn)機(jī)中執(zhí)行算術(shù)運(yùn)算時(shí)會(huì)產(chǎn)生溢出,原因?在定點(diǎn)補(bǔ)碼加法運(yùn)算中,產(chǎn)生溢出的條件是什么寫出兩種?判斷補(bǔ)碼加法運(yùn)算溢出的方法有三種【方法一】XF和YF分別是兩個(gè)數(shù)字符號(hào)位,ZF是運(yùn)算結(jié)果的符號(hào)位。當(dāng)XF=
在定點(diǎn)機(jī)中執(zhí)行算術(shù)運(yùn)算時(shí)會(huì)產(chǎn)生溢出,原因?
在定點(diǎn)補(bǔ)碼加法運(yùn)算中,產(chǎn)生溢出的條件是什么寫出兩種?
判斷補(bǔ)碼加法運(yùn)算溢出的方法有三種【方法一】XF和YF分別是兩個(gè)數(shù)字符號(hào)位,ZF是運(yùn)算結(jié)果的符號(hào)位。當(dāng)XF=YF=0(兩個(gè)數(shù)字均為正)和ZF=1(結(jié)果為負(fù))時(shí),出現(xiàn)負(fù)溢出;當(dāng)XF=YF=1(兩個(gè)數(shù)字均為負(fù))和ZF=0(結(jié)果為正)時(shí),出現(xiàn)正溢出。如果CS?CP=0,則不存在溢出;如果CS?CP=1,則存在溢出。[方法3]用變形補(bǔ)碼進(jìn)行雙符號(hào)位運(yùn)算(正號(hào)為00,負(fù)號(hào)為11)。如果運(yùn)算結(jié)果的符號(hào)位為“01”,則為正溢出;如果運(yùn)算結(jié)果的雙符號(hào)位為10,則為負(fù)溢出;如果運(yùn)算結(jié)果的雙符號(hào)位為00或11,則不存在溢出。
定點(diǎn)加減法運(yùn)算中的溢出是什么意思?
判斷補(bǔ)碼加法運(yùn)算溢出的方法有三種:【方法一】XF和YF分別是兩個(gè)數(shù)字符號(hào)位,ZF是運(yùn)算結(jié)果的符號(hào)位。當(dāng)XF=YF=0(兩個(gè)數(shù)字均為正)和ZF=1(結(jié)果為負(fù))時(shí),出現(xiàn)負(fù)溢出;當(dāng)XF=YF=1(兩個(gè)數(shù)字均為負(fù))和ZF=0(結(jié)果為正)時(shí),出現(xiàn)正溢出。如果CS⊕CP=0,則不存在溢出;如果CS⊕CP=1,則存在溢出。[方法3]用變形補(bǔ)碼進(jìn)行雙符號(hào)位運(yùn)算(正號(hào)為00,負(fù)號(hào)為11)。如果運(yùn)算結(jié)果的符號(hào)位為“01”,則為正溢出;如果運(yùn)算結(jié)果的雙符號(hào)位為10,則為負(fù)溢出;如果運(yùn)算結(jié)果的雙符號(hào)位為00或11,則不存在溢出。
定點(diǎn)數(shù)運(yùn)算方法及溢出判別方法?
定點(diǎn)加減法的溢出判斷可以通過單符號(hào)位溢出檢測法和雙符號(hào)進(jìn)位溢出檢測法來確定。目前,補(bǔ)碼廣泛應(yīng)用于定點(diǎn)的加減運(yùn)算。
1. 加減運(yùn)算法:根據(jù)補(bǔ)碼的設(shè)計(jì)規(guī)則,任意一個(gè)絕對(duì)值相同的負(fù)數(shù)和正數(shù),負(fù)數(shù)是正數(shù)加1的反碼,所以如果把絕對(duì)值相同的負(fù)數(shù)和正數(shù)相加,正好好的結(jié)果都是0(最高的位被帶入,并被丟棄)。通過與下補(bǔ)表的比較,我們可以發(fā)現(xiàn),基于這種設(shè)計(jì),當(dāng)兩個(gè)數(shù)相加時(shí),符號(hào)位也可以直接參與運(yùn)算,運(yùn)算結(jié)果也包含符號(hào)位。
2. 溢出判斷:(1)溢出只有正數(shù)和正數(shù)兩種,結(jié)果為負(fù)數(shù),發(fā)生溢出。負(fù)數(shù)和負(fù)數(shù)相加,結(jié)果為正數(shù),并發(fā)生溢出。為什么正數(shù)和負(fù)數(shù)的相加不溢出?因?yàn)檎龜?shù)和負(fù)數(shù)的最大值的絕對(duì)值是相同的,所以正數(shù)和負(fù)數(shù)相加的結(jié)果必須在絕對(duì)值之內(nèi)。減法只是取加數(shù)的補(bǔ)碼并相加,所以知道加法的溢出就足夠了。(2) 進(jìn)位溢出法(單符號(hào)位)可以從補(bǔ)碼表中看出:無溢出:將絕對(duì)值較大的負(fù)數(shù)和絕對(duì)值較小的正數(shù)相加,最高有效位(即最高值位)不會(huì)溢出,因此符號(hào)位沒有進(jìn)位。當(dāng)絕對(duì)值較小的負(fù)數(shù)與絕對(duì)值較大的正數(shù)相加時(shí),最高有效位溢出,符號(hào)位從1變?yōu)?0(0)進(jìn)位。溢出情況:上面已經(jīng)知道:正數(shù)和正數(shù)相加,結(jié)果是負(fù)數(shù),溢出。在這種情況下,最高有效位帶進(jìn)位,而符號(hào)位從0變?yōu)?,不帶進(jìn)位。負(fù)數(shù)和負(fù)數(shù)相加,結(jié)果為正數(shù),并發(fā)生溢出。在這種情況下,最高有效位不進(jìn)位,符號(hào)位從1變?yōu)?0(0)。因此,當(dāng)最高有效位的進(jìn)位與符號(hào)位的進(jìn)位不同時(shí),就會(huì)發(fā)生溢出。(3) 雙符號(hào)位進(jìn)位溢出檢測方法使用雙符號(hào)位(00,11)進(jìn)行加法,我們已經(jīng)知道:所以當(dāng)最高有效位和符號(hào)位的進(jìn)位不同時(shí),就表示發(fā)生了溢出。如果符號(hào)位被攜帶,如果它沒有被攜帶,最高有效位將是11=10(110)。這是負(fù)溢出。如果符號(hào)位未進(jìn)位,則最高有效位的進(jìn)位變?yōu)?0 1=01。這是一個(gè)正溢出。
補(bǔ)碼運(yùn)算為什么會(huì)溢出?
通常有三種表達(dá)式(語句):
](1)添加兩個(gè)具有相同符號(hào)的補(bǔ)碼。如果和的符號(hào)與加數(shù)的符號(hào)相反,或兩個(gè)符號(hào)相反的補(bǔ)數(shù)相減,差的符號(hào)與減法的符號(hào)相同,則屬于運(yùn)算結(jié)果溢出。這種判別方法比較復(fù)雜,既要區(qū)分兩個(gè)不同運(yùn)算的加減,又要檢查結(jié)果的符號(hào)和其中一個(gè)操作數(shù)的相同差,所以很少使用;
(2)兩個(gè)補(bǔ)碼的加減運(yùn)算時(shí),如果最高值位到符號(hào)位的進(jìn)位值與符號(hào)位到較高位的進(jìn)位值不同,則也是運(yùn)算結(jié)果溢出。
(3)使用雙符號(hào)位(如定點(diǎn)十進(jìn)制的模4補(bǔ)碼)時(shí),如果兩個(gè)符號(hào)位的值不同(01或10),則會(huì)溢出。01表示兩個(gè)正數(shù)相加的結(jié)果大于機(jī)器能表示的最大正數(shù),稱為“溢出”;10表示兩個(gè)負(fù)數(shù)相加的結(jié)果小于機(jī)器能表示的最小負(fù)數(shù),稱為“下溢”;雙符號(hào)位的高位符號(hào)位,無論結(jié)果是否溢出,都是運(yùn)算結(jié)果的正確符號(hào)位,在乘法過程中具有重要的實(shí)際意義。請(qǐng)注意,在使用雙符號(hào)位的方案中,當(dāng)數(shù)據(jù)存儲(chǔ)在寄存器和內(nèi)存中時(shí),只需要存儲(chǔ)一個(gè)符號(hào),雙符號(hào)位僅用于加法器的電路部分。
同樣,這三種不同的說法是對(duì)同一事實(shí)的略微不同的表達(dá)。實(shí)現(xiàn)中使用的行可以不同,但問題的本質(zhì)是完全相同的。
在定點(diǎn)補(bǔ)碼加法運(yùn)算中,產(chǎn)生溢出的條件是什么寫出兩種?
如果兩個(gè)最高的位被攜帶或未攜帶,則不存在溢出;否則,則存在溢出
最高的位是01,這是上溢出
最高的位是10,這是下溢出