實(shí)驗(yàn)序號(hào):2 實(shí)驗(yàn)名稱(chēng):定點(diǎn)數(shù)加減法的機(jī)器級(jí)表示
適用專(zhuān)業(yè):軟件工程 學(xué) 時(shí) 數(shù):2學(xué)時(shí)
按照實(shí)驗(yàn)題目的要求,編寫(xiě)程序并上機(jī)調(diào)試
三、實(shí)驗(yàn)設(shè)備、環(huán)境計(jì)算機(jī)、Windows 7 、Visual C++ 6.0
四、實(shí)驗(yàn)步驟及內(nèi)容用C語(yǔ)言編寫(xiě)二進(jìn)制數(shù)運(yùn)算模擬程序
1.編寫(xiě)整數(shù)加減法器:
設(shè)在main中有如下數(shù)組:
char int1[5];
char int2[5];
編寫(xiě)函數(shù)
int addsub(char int1[],char int2[],int flag,int m,int n);
當(dāng)flag為0時(shí)表示加法運(yùn)算,當(dāng)flag為1時(shí)表示減法運(yùn)算,做4位的加減法運(yùn)算,返回4位結(jié)果。m和n分別是int1和int2的大小。在函數(shù)中必須要計(jì)算OF,CF,SF,ZF,并輸出4個(gè)值,根據(jù)值輸出是否產(chǎn)生了溢出,是哪一種溢出。
提示:
1.要注意到減法運(yùn)算本質(zhì)仍然是做加法,只不過(guò)要將減數(shù)取補(bǔ)碼而已。
2.注意OF和CF并不只是判定最高位是否有進(jìn)位
3.注意判定是否溢出必須要知道數(shù)是有符號(hào)還是無(wú)符號(hào)才行,加法器本身沒(méi)有能力判定這一點(diǎn)。
1、為什么要用補(bǔ)碼來(lái)表示整數(shù)?
2、機(jī)器底層是如何判定溢出的?
3、為什么編譯器一定要知道數(shù)據(jù)的類(lèi)型才能夠做計(jì)算?
#includeint addsub(char int1[], char int2[], int flag, int m, int n);
int main()
{char input[10];
scanf("%s", input);
char int1[5];
char int2[5];
for (int i = 0; i< 4; i++)
{int1[i] = input[i] - '0';
int2[i] = input[i + 5] - '0';
}
int flag = input[4]=='-'?1:0;
addsub(int1, int2, flag, 4, 4);
printf("結(jié)果:%d%d%d%d\n", int2[0], int2[1], int2[2], int2[3]);
printf("ZF=%d,SF=%d,CF=%d,OF=%d",int1[0], int1[1], int1[2], int1[3]);
return 0;
}
int addsub(char int1[], char int2[], int flag, int m, int n)
{if(flag) {for(int i = 0; i< 4; i++ ) int2[i] = !int2[i];
for(int i = n - 1, carry = 1; ~i; i--) {int c = carry, b = int2[i];
int2[i] = int2[i] ^ carry;
carry = b & c;
if(carry == 0) break;
}
}
int carry[5] = {0}, res[4] = {0};
for(int i = n - 1; ~i; i-- ) {int a = int1[i], b = int2[i], c = carry[i + 1];
res[i] = a ^ b ^ c;
carry[i] = (a & c) | (b & c) | (a & b);
}
int OF = 0, ZF = 0, SF = 0, CF = 0;
CF = carry[0] ^ flag;
SF = res[0];
ZF = !(res[0] | res[1] | res[2] | res[3]);
OF = carry[0] ^ carry[1];
int1[0] = ZF, int1[1] = SF, int1[2] = CF, int1[3] = OF;
for(int i = 0; i< 4; i++ ) int2[i] = res[i];
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱(chēng):計(jì)算機(jī)系統(tǒng)基礎(chǔ)實(shí)驗(yàn)-定點(diǎn)數(shù)加減法的機(jī)器級(jí)表示-創(chuàng)新互聯(lián)
本文路徑:http://vcdvsql.cn/article42/jgoec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站建設(shè)、Google、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容