計(jì)算機(jī)組成原理試驗(yàn)_第1頁
計(jì)算機(jī)組成原理試驗(yàn)_第2頁
計(jì)算機(jī)組成原理試驗(yàn)_第3頁
計(jì)算機(jī)組成原理試驗(yàn)_第4頁
計(jì)算機(jī)組成原理試驗(yàn)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、遁城工等院課程設(shè)計(jì)說明書計(jì)算機(jī)組成原理算法實(shí)現(xiàn)(五)1課程設(shè)計(jì)目的本課程設(shè)計(jì)是在學(xué)完本課程教學(xué)大綱規(guī)定的全部內(nèi)容、完成所有實(shí)踐環(huán)節(jié)的基礎(chǔ)上,旨在深化學(xué)生學(xué)習(xí)的計(jì)算機(jī)組成原理課程基本知識,進(jìn)一步領(lǐng)會(huì)計(jì)算機(jī)組成原理的一些算法,并進(jìn)行具體實(shí)現(xiàn),提高分析問題、解決問題的綜合應(yīng)用能力。2課程設(shè)計(jì)內(nèi)容與要求1、題目:計(jì)算機(jī)組成原理算法實(shí)現(xiàn)(五)2、功能:夠?qū)崿F(xiàn)機(jī)器數(shù)的真值還原(定點(diǎn)整數(shù))、定點(diǎn)整數(shù)的單符號位補(bǔ)碼加減運(yùn)算、定點(diǎn)整數(shù)的原碼一位乘法運(yùn)算和浮點(diǎn)數(shù)的加減運(yùn)算。3功能模塊詳細(xì)設(shè)計(jì)3.1主窗體設(shè)計(jì)計(jì)苒機(jī)是威原理-x也吉國.耳印士展怔.承n證中罡款-力虧1一+卜的jiinis耳岳呈小湎:宇一再加拜三耳計(jì)算

2、機(jī)盥成原理算法實(shí)現(xiàn)輯X李瓊認(rèn)圖3-1主界面圖系統(tǒng)進(jìn)入(主)窗體的設(shè)計(jì):菜單需要在輸入口令正確后方可激活使用??诹钶斎脲e(cuò)誤時(shí)要給出重新輸入口令的提示,三次口令輸入錯(cuò)誤應(yīng)該禁止使用。由于本次課程設(shè)計(jì)所用的語言是Java,在對應(yīng)主窗口的主類中設(shè)計(jì)主窗口的樣式,及個(gè)對應(yīng)按鈕的功能,根據(jù)指導(dǎo)書的內(nèi)容布局各個(gè)Button,本次設(shè)計(jì)主窗口共有六個(gè)按鈕,其中Buttonl對應(yīng)確認(rèn),其余的分別對五個(gè)功能按鈕。除此之外,各按鈕標(biāo)簽都已在指導(dǎo)書中給出,留出白色的輸入口令的窗口。運(yùn)行程序的主界面如圖3-3:計(jì)苴機(jī)生疵原理-*用現(xiàn)胃1121:更回amj|罡由會(huì)訊單將臂過樸頤o鼻g厘點(diǎn)aamiq施丟計(jì)用機(jī)組成提理算法實(shí)現(xiàn)

3、(出)正確x口令正通,請迭容菜單干的臊作印口卓定圖3-3口令界面圖3.2主體功能NewClass.java該java文件為整個(gè)程序的主類。Form2.java實(shí)現(xiàn)機(jī)器數(shù)的真值還原(定點(diǎn)整數(shù))Form3.java實(shí)現(xiàn)定點(diǎn)整數(shù)的單符號位補(bǔ)碼加減運(yùn)算、定點(diǎn)整數(shù)的Form4.java實(shí)現(xiàn)定點(diǎn)整數(shù)的原碼乘法運(yùn)算。Form5.java實(shí)現(xiàn)浮點(diǎn)數(shù)的加減運(yùn)算。3.2.1 定點(diǎn)整數(shù)真值還原點(diǎn)擊主界面中的機(jī)器數(shù)真值還原按鈕出現(xiàn)如圖3-4界面iti計(jì)麗電或皿s-機(jī)翱眥宜進(jìn)津癥點(diǎn)崢定曲效鼻胃號必卜碼加“運(yùn)算|宏立18曲濕選|年點(diǎn)的加笫期|&feirm2-OX機(jī)器數(shù)的真值還原(定點(diǎn)整數(shù))有恒還厚結(jié)累為二加。一|

4、.即力直-7點(diǎn)值|祚7值|移由值返回圖3-4定點(diǎn)整數(shù)還原在上面的窗體中按“輸入”按扭時(shí),將輸入焦點(diǎn)設(shè)置為最上面的一個(gè)文本框上。輸入一個(gè)機(jī)器數(shù)(如10010)后,按“原-真值”、“反-真值”、“補(bǔ)-真值”或“移-真值”按扭中的任一個(gè)后,將在第二文本框中顯示對應(yīng)操作的結(jié)果。選擇“返回”按扭時(shí)將關(guān)閉此窗體。定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是固定的。由于約定在固定的位置,所以小數(shù)點(diǎn)就不再使用記號”.”來表示。一般書寫所表示的數(shù)據(jù)稱為真值,在計(jì)算機(jī)中為了表示符號位,通常把符號位和數(shù)字位一起編碼來表示相應(yīng)的數(shù),形成了各種數(shù)據(jù)的存儲和表示方法,這些編碼稱為機(jī)器碼。常用的機(jī)器碼有原碼、反碼、補(bǔ)碼和移碼

5、。a)原碼:原碼的數(shù)值部分是該數(shù)的絕對值,最高位表示符號位,最高位為0是正數(shù),最高位為1是負(fù)數(shù)。b)反碼:正數(shù)的反碼等于原碼,負(fù)數(shù)的反碼等于除符號位外其余二進(jìn)制數(shù)碼0變成1,1變成0o正數(shù):岡反=x原=x;負(fù)數(shù):符號位不變,其余變反c)補(bǔ)碼:正數(shù)的補(bǔ)碼等于原碼,負(fù)數(shù)的補(bǔ)碼等于反碼加1。正數(shù):x補(bǔ)=x原;負(fù)數(shù):x補(bǔ)=x反+1d)移碼:是符號位取反的補(bǔ)碼,一般用做浮點(diǎn)數(shù)的階碼,引入的目的是為了保證浮點(diǎn)數(shù)的機(jī)器碼為全003.2.3定點(diǎn)整數(shù)的單符號位補(bǔ)碼加減運(yùn)算進(jìn)行定點(diǎn)整數(shù)單符號位補(bǔ)碼加減法的實(shí)現(xiàn)時(shí)都是在主窗體選擇對應(yīng)的菜單項(xiàng)后進(jìn)入對應(yīng)窗體再進(jìn)行具體操作。操作時(shí)首先選擇“輸入”按扭輸入?yún)⑴c運(yùn)算的數(shù)據(jù),

6、然后再選操作按扭。如圖3-6亂器椒的直伯還原虛立或?!叭c(diǎn)蝴(單符號位外碼加城運(yùn)苴|蹙.點(diǎn)整劫的昆碼篇擊|浮.點(diǎn)的拉口運(yùn)耳|I由=型符號位計(jì)超帆-x定士瞿疝單苻號應(yīng)訃內(nèi)加抵在圖3-6定點(diǎn)整數(shù)補(bǔ)碼加減定點(diǎn)整數(shù)單符號位補(bǔ)碼加減法的實(shí)現(xiàn),輸入按鈕,刪除所有數(shù)據(jù)并將光標(biāo)移到第一個(gè)輸入窗口里面,開始輸入,注意是補(bǔ)碼輸入,實(shí)現(xiàn)定點(diǎn)整數(shù)加減法時(shí),定義了一個(gè)carry數(shù)組記錄每位的進(jìn)位,carry最后一位初值為0'carry口長度比輸入大1位,用多重選擇語句嵌套使用,羅列兩數(shù)第i位及上位進(jìn)位的狀況,輸出結(jié)果記錄在outi中,第i位進(jìn)位記錄在carryi中,當(dāng)最高數(shù)值位進(jìn)位與符號位進(jìn)位不同時(shí)表溢出。值得

7、一提的是,加一個(gè)負(fù)數(shù)和減一正數(shù)時(shí),都轉(zhuǎn)化為加一個(gè)數(shù)的補(bǔ)碼,由之前的算法保證,進(jìn)行運(yùn)算,其他保持不變。注意的是,輸入第二個(gè)數(shù)時(shí),要注意字符串長度與第一個(gè)字符串長度保持一致,否則將產(chǎn)生中斷提醒請輸入數(shù)值位長度相等的數(shù)字:接下來的返回鍵與之前界面功能相同,回到主界面。算法的原理:(1)參加運(yùn)算操作的數(shù)都用補(bǔ)碼表示。(2)數(shù)據(jù)的符號與數(shù)據(jù)一樣參加運(yùn)算。(3)求差時(shí)將負(fù)減數(shù)求補(bǔ),用求和代替求差,將減法運(yùn)算轉(zhuǎn)化為補(bǔ)碼的加法運(yùn)算。(4)運(yùn)算結(jié)果為補(bǔ)碼。如果符號位為0,表明運(yùn)算結(jié)果為正;如果符號位為1,則表明結(jié)果為負(fù)。5)符號位的進(jìn)位為模值,應(yīng)該去掉。補(bǔ)碼減法運(yùn)算公式為:X補(bǔ)-Y補(bǔ)=以-Y補(bǔ)(3.2)通過Y補(bǔ)

8、求得-Y補(bǔ)可以將減法運(yùn)算轉(zhuǎn)化為補(bǔ)碼的加法運(yùn)算。已知Y補(bǔ)求-Y補(bǔ)的法則是:對Y補(bǔ)各位(包括符號位)取反,末位加1,就可以得到-Y補(bǔ)例Y補(bǔ)=1.1011則-Y補(bǔ)=0.0101Y補(bǔ)=0.1011則Y補(bǔ)=1.0101例4X=0.1100Y=0.0110求兇補(bǔ)一Y補(bǔ)=?解:X補(bǔ)=0-1100Y補(bǔ)=00110Y補(bǔ)=11010溢出:在定點(diǎn)數(shù)機(jī)器中,數(shù)的大小超出了定點(diǎn)數(shù)能表示的范圍,叫溢出。a)在定點(diǎn)小數(shù)機(jī)中數(shù)的表示范圍是-1<x<1,如果運(yùn)算過程中出現(xiàn)了大于1或者小于1的情況。b)在定點(diǎn)整數(shù)機(jī)(8位)中數(shù)的表示范圍是-128<x<127,如果運(yùn)算過程中出現(xiàn)了大于127或者小于128的

9、情況。雙符號位法:將符號位擴(kuò)展為2位,具體說就是對于正數(shù)兩個(gè)符號位是“00”,對于負(fù)數(shù)兩個(gè)符號位是“11”。兩個(gè)符號位都看作數(shù)碼一樣參加運(yùn)算。兩個(gè)數(shù)相加后,其結(jié)果的符號位出現(xiàn)“01”或“10”兩種組合時(shí),表示發(fā)生溢出。符號位“01”,上溢出符號位“10”,下溢出符號位“00”或者“11”,未溢出從y補(bǔ)求y補(bǔ)的法則是:對y補(bǔ)”包括符號位求反且最末位加1”,即可得到y(tǒng)補(bǔ)。3.2.4定點(diǎn)整數(shù)的一位原碼乘法運(yùn)算進(jìn)行定點(diǎn)整數(shù)原碼乘法的實(shí)現(xiàn)時(shí)都是在主窗體選擇對應(yīng)的菜單項(xiàng)后進(jìn)入對應(yīng)窗體再進(jìn)行具體操作。操作時(shí)首先選擇“輸入”按扭輸入?yún)⑴c運(yùn)算的數(shù)據(jù),然后再選操作按扭。如圖3-7IAl計(jì)算用組成原理機(jī)器數(shù)的面值還

10、原定點(diǎn)整數(shù))I定點(diǎn)整數(shù)單符號位補(bǔ)碼加減運(yùn)算I定點(diǎn)整數(shù)的原碼乘法I浮點(diǎn)的加成運(yùn)算畫毒會(huì)費(fèi)補(bǔ)柔法-ax定,點(diǎn)整數(shù)的原碼纂法通輸入破索款(一位符號位):Tiooi請輸入秉數(shù)一位符號位):叵麗乘法結(jié)果為(一位符號位):尸1口1皿口喻人一,乘法”ni返回圖3-7定點(diǎn)整數(shù)原碼乘法設(shè)置輸出數(shù)組out口與進(jìn)位標(biāo)志數(shù)組carry,carry最后一位初值為'0',carry長度比輸入大1位。對輸入的兩個(gè)字符串仿照并行乘法器的工作原理,將乘法轉(zhuǎn)化為加法。使用循環(huán)語句,按位相乘,再做原碼加法。由于是帶一位符號位的原碼乘法,要得到運(yùn)算結(jié)果的符號位,就要對in10和in20進(jìn)行判斷:if(in10=

11、9;0'&&in20='0')|(in10='1'&&in20='1')signal="+"if(in10='0'&&in20='1')|(in10='1'&&in20='0')signal="-"返回按鈕。算法的原理:在定點(diǎn)計(jì)算機(jī)中,兩個(gè)原碼表示的數(shù)相乘的運(yùn)算規(guī)則是:乘積的符號位由兩數(shù)的符號位按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積。設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)小

12、數(shù)表示(定點(diǎn)整數(shù)也同樣適用)被乘數(shù)乂原=乂£.xn1,x1x0乘數(shù)yyf.yn1,y1y0則乘積z原=(xfyf)+(0.xn1,x1x0)(0.yn1,y1y0)式中,xf為被乘數(shù)符號,yf為乘數(shù)符號。機(jī)器算法:機(jī)器中一種方法是多次采用”加法-移位”的方法來完成,稱為串行乘法器,它的硬件結(jié)構(gòu)簡單,但是速度慢,目前廣泛使用的是流水式陣列乘法器,稱為并行乘法器。無符號數(shù)m乘以n會(huì)產(chǎn)生m*n個(gè)位積,出現(xiàn)m+n個(gè)列和,并行乘法器的關(guān)鍵是快速產(chǎn)生m*n個(gè)位積,對位積進(jìn)行相加運(yùn)算產(chǎn)生m+n個(gè)列和。第一步:位積的產(chǎn)生觀察乘法運(yùn)算0*0=0,0*1=0,1*0=0,1*1=1相當(dāng)于:anb。所以m

13、*n個(gè)位積可以由m*n個(gè)與門并行產(chǎn)生。第二步:列和的產(chǎn)生:利用全加器3.2.5浮點(diǎn)數(shù)的加減運(yùn)算進(jìn)行定點(diǎn)整數(shù)單符號位補(bǔ)碼加減法、定點(diǎn)整數(shù)原碼乘法、浮點(diǎn)加減法的實(shí)現(xiàn)時(shí)都是在主窗體選擇對應(yīng)的菜單項(xiàng)后進(jìn)入對應(yīng)窗體再進(jìn)行具體操作。操作時(shí)首先選擇“輸入”按扭輸入?yún)⑴c運(yùn)算的數(shù)據(jù),然后再選操作按扭。如圖3-8三國計(jì)算磯組成原理-0機(jī)器數(shù)的真值遷原能點(diǎn)整整V定點(diǎn)整整單符號位位碼力屏運(yùn)算|定點(diǎn)整數(shù)的原碼柒法|1點(diǎn)的加成運(yùn)算I圖form5X浮點(diǎn)數(shù)加感法輸入_加法|:一祗二j|退里圖3-8浮點(diǎn)加減法運(yùn)算數(shù)據(jù)輸入分為階碼和尾數(shù),將兩個(gè)數(shù)的階碼和尾數(shù)對應(yīng)的變形補(bǔ)碼表示出來,比較價(jià)碼大小并完成對階即小階向大階看齊,若對階時(shí)

14、發(fā)生溢出則發(fā)出提醒,統(tǒng)一階碼后,采用規(guī)格化進(jìn)行尾數(shù)求和,對尾數(shù)進(jìn)行舍入處理,判斷尾數(shù)最末尾情況,用Replace語句實(shí)現(xiàn)粗略舍入處理。最后進(jìn)行變形補(bǔ)碼還原。算法的原理:浮點(diǎn)數(shù)的加減法運(yùn)算分為六個(gè)步驟:a)0操作數(shù)檢查浮點(diǎn)加減運(yùn)算過程比定點(diǎn)運(yùn)算過程復(fù)雜。如果判知兩個(gè)操作數(shù)X或y中有一個(gè)數(shù)為0,即可得知運(yùn)算結(jié)果而沒有必要再進(jìn)行后續(xù)的一系列操作以節(jié)省運(yùn)算時(shí)間。0操作數(shù)檢查步驟則用來完成這一功能。參加加法運(yùn)算的數(shù)據(jù)都是非零,進(jìn)入下一步。b)比較價(jià)碼大小并完成對階為了便于直觀理解,假設(shè)兩數(shù)均以補(bǔ)碼表示,階碼采用雙符號位,尾數(shù)采用單符號位。兩浮點(diǎn)數(shù)進(jìn)行加減,首先要看兩數(shù)的階碼是否相同,若二數(shù)階碼不同,表示

15、小數(shù)點(diǎn)位置沒有對齊,此時(shí)必須使二數(shù)階碼相同,這個(gè)過程叫作對階。對階操作規(guī)定使尾數(shù)右移,尾數(shù)右移后階碼作相應(yīng)增加,因此對階時(shí),總是使小階向大階看齊。c)尾數(shù)進(jìn)行加減運(yùn)算對階結(jié)束后,即可進(jìn)行尾數(shù)的求和運(yùn)算。不論加法運(yùn)算還是減法運(yùn)算,都按加法進(jìn)行操作(減法利用補(bǔ)碼減法轉(zhuǎn)換成補(bǔ)碼的加法來做),其方法與定點(diǎn)加減法運(yùn)算完全一樣。d)結(jié)果規(guī)格化采用雙符號位表示尾數(shù)時(shí),如果兩符號位為01或10時(shí),應(yīng)將結(jié)果尾數(shù)右移一位,階碼加1(叫“右規(guī)”)。如果尾數(shù)最高數(shù)值位與符號位相同,應(yīng)將尾數(shù)左移,階碼減1,直至數(shù)值位最高位與符號位相反(叫“左規(guī)”)oe)舍入運(yùn)算在對階向右規(guī)格化,尾數(shù)向右移位,這樣被右移的尾數(shù)的低位部分

16、會(huì)被丟掉,從而造成一定誤差,要進(jìn)行舍入處理。簡單的舍入方法有兩種:一種是“0舍1入”法,即如果右移時(shí)被丟掉數(shù)位的最高位為0則舍去,為1則將尾數(shù)的末位做加加1運(yùn)算。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末尾恒置1。f)判斷結(jié)果是否溢出階碼為00011,階碼的符號位為00,根據(jù)補(bǔ)碼的雙符號檢測溢出的方法確定階碼不溢出。4、設(shè)計(jì)小結(jié)通過這次的計(jì)算機(jī)組成原理的課程設(shè)計(jì),把我很多不懂的內(nèi)容又學(xué)習(xí)了一遍,又鞏固了很多。使我對計(jì)算機(jī)的認(rèn)識有了更進(jìn)一步的加深和認(rèn)知。在這為期一周的課程設(shè)計(jì)的期間內(nèi),在進(jìn)行課程設(shè)計(jì)的過程中,我不僅鞏固了以往所學(xué)過的知識,還學(xué)到了許多在課堂上所學(xué)不到的東西,比如動(dòng)手能力

17、,實(shí)際問題的解決能力和與團(tuán)隊(duì)中成員的團(tuán)隊(duì)協(xié)作與配合的能力,這都使我受益匪淺。但是我自己有很多不會(huì)的知識點(diǎn),有很大一部分是同學(xué)們告訴我的。也有很多是自己在書本上學(xué)習(xí)到得當(dāng)初在學(xué)習(xí)的時(shí)候并沒有好好的學(xué)習(xí)所在做這個(gè)的時(shí)候比較困難。經(jīng)過了這次的課程設(shè)計(jì),我想,對于我日后的計(jì)算機(jī)的相關(guān)的學(xué)習(xí)肯定會(huì)有諸多助益與影響,為將來的學(xué)習(xí)生活打下了堅(jiān)實(shí)的基礎(chǔ)。以后在遇到這些就不會(huì)無從下手了。參考文獻(xiàn)1白中英.計(jì)算機(jī)組成原理(第五版)M,北京:科學(xué)出版社,2010.2吳萍.java程序設(shè)計(jì)(第一版)M.北京:清華大學(xué)出版社2006.附錄NewClass.javapublicstaticvoidmain(Stringa

18、rgs)newNewclass("計(jì)算機(jī)組成原理");publicvoidactionPerformed(ActionEvente)Strings=newString("000");if(e.getSource()=button1)while(i=0&&m<=3&&(!(text1.getText().equals("")if(text1.getText().equals(s)i=1;JOptionPane.showMessageDialog(this,"口令正確,請選擇菜單欄的操作&q

19、uot;"正確",JOptionPane.INFORMATION_MESSAG£text1.setEnabled(false);text1.setVisible(false);a22.setVisible(true);a2.setVisible(false);elsem+;JOptionPane.showMessageDialog(this,"您輸入的口令不正確","警告",JOptionPane.WARNING_MESSAG)E;text1.setText(null);if(m>3)JOptionPane.showM

20、essageDialog(this,"您三次口令錯(cuò)誤,確定后退出!","警JOptionPane.ERROR_MESSAG)E;System.exit(0);if(i=1)if(e.getSource()=m1)Form2s1=newForm2();s1.setVisible(true);elseif(e.getSource()=m2)Form3f1=newForm3();f1.setTitle("定點(diǎn)整數(shù)單符號位補(bǔ)碼加減");f1.setVisible(true);elseif(e.getSource()=m3)Form4f2=newForm

21、4();f2.setTitle(e.getSource()=定點(diǎn)整數(shù)補(bǔ)乘法");f2.setVisible(true);elseifm4)Form5f5=newForm5();f5.setVisible(true);Form2.javapublicvoidmouseClicked(MouseEvente)Componentcom=null;if(e.getSource()=button2)com=(Component)e.getSource();e=SwingUtilities.convertMouseEvent(com,e,this);Strings=text1.getText()

22、;booleanboo=s.startsWith("0",0);if(boo=true)n1=s.length();s1=s.substring(1,n1);text2.setText("+"+s1);elsen1=s.length();si=s.substring(1,text2.setText("elseif(e.getSource()=n1);s1);buttoni)texti.setText("");if(e.getSource()=buttons)s=texti.getText();booleanboo=s.sta

23、rtsWith("0",0);if(boo=true)ni=s.length();si=s.substring(i,ni);text2.setText("+"+si);elseni=s.length();si=s.substring(i,ni);chara=si.toCharArray();for(i=0;i<=a.length-i;i+)if(ai='0')ai='i'elseif(ai='i')ai='0'for(i=0;i<=a.length-i;i+)si=String.

24、valueOf(a);text2.setText("-"+si);if(e.getSource()=button4)s=texti.getText();booleanboo=s.startsWith("0",0);if(boo=true)ni=s.length();si=s.substring(i,ni);text2.setText("+"+si);elseni=s.length();si=s.substring(i,ni);j=si.lastIndexOf("i")+i;si=s.substring(i,j);c

25、hara=si.toCharArray();for(i=0;i<=a.length-i;i+)if(ai='0')ai='i'elseif(ai='i')ai='0'valueOf(a);for(i=0;i<=a.length-i;i+)si=String.temp=s.substring(j,ni);text2.setText("-"+si+temp);if(e.getSource()=e=Swingutilities.button5)com=(Component)e.getSource();co

26、nvertMouseEvent(com,e,this);Strings=texti.getText();booleanboo=s.startsWith("0",0);if(boo=false)ni=s.length();si=s.substring(i,ni);text2.setText("+"+si);elseni=s.length();"0")valueOf(a);(Component)false););si=s.substring(1,n1);j=si.lastIndexOf("1")+1;si=s.subs

27、tring(1,j);chara=s1.toCharArray();for(i=0;i<=a.length-1;i+)if(ai=ai='1"elseif(ai="1")ai="0"for(i=0;i<=a.length-1;i+)s1=String.temp=s.substring(j,n1);text2.setText("-"+s1+temp);if(e.getSource()=button6)com:e.getSource();e=Swingutilities.convertMouseEvent(c

28、om,e,this)Newclasspp=newNewclass(null);setVisible(false);pp.setVisible(true);For3.javapublicvoidwindowClosing(WindowEvente)setVisible(validate();charbu(charin)charc=in0;if(c="1")charcarry="0"inti;chartemp=in;for(i=1;i<=temp.length-1;i+)if(tempi="0")tempi="1"

29、;elseif(tempi="1")tempi="0"if(temptemp.length-1="0")temptemp.length-1="1"carry="0"elseif(temptemp.length-1="1")temptemp.length-1="0"carry="1"for(i=temp.length-2;i>=0;i-)if(tempi="0"&&carry="0&qu

30、ot;)tempi="0"carry="0"elseif(tempi="0"&&carry="1")tempi="1"carry="0""0")elseif(tempi="1"&&carrytempi='1'carry='0elseif(tempi='1'&&carry='1')tempi='0'carry='

31、1'in=temp;returnin;charjia(charin1,charin2)inti=0;charout;charcarry=newcharin1.length+1;out=in1;carrycarry.length-1='0for(i=in1.length-1;i>=0;i-)if(in1i='0'&&in2i='0'&&carryi+1='0')outi='0'carryi='0'elseif(in1i='0'='1'

32、;='1'='0'='1'='0'='0'='1'carryi='0'elseif(in1;carryi='0'elseif(in1;carryi='1'elseif(in1;carryi='0'elseif(in1;carryi='1'elseif(in1;carryi='1'elseif(in1;carryi='1'i='1'i='1'i='0&

33、#39;i='0'i='1'i='1'if(carry0!=carry1)&&in2i='1'&&carry&&in2i='0'&&carry&&in2i='1'&&carry&&in2i='0'&&carry&&in2i='1'&&carry&&in2i='0'&&am

34、p;carry&&in2i='1'&&carryStringtemp=i+1='0')outii+1='0')outii+1='0')outii+1='1')outii+1='1')outii+1='1')outii+1='1')outinewString("溢出");out=temp.toCharArray();returnout;charjian(charin1,charin2)if(in20='1

35、9;)in2=bu(in2);in20='0''1'in2=bu(in2);returno;elseif(in20='0')in20=charo=jia(in1,in2);publicvoidactionPerformed(ActionEvente)if(e.getSource()=button1)data.setText(null);data1.setText(null);data2.setText(null);data3.setText(null);data.requestFocusInWindow();elseif(e.getSource(

36、)=button2)first=data.getText();next=data1.getText();charout='1'='1'='0'chari1,i2;11 =first.toCharArray();12 =next.toCharArray();13 (i1.length!=i2.length)data1.setText("請輸入數(shù)值位長度相等的數(shù)字!");elseout=jia(i1,i2);output=newString(out);data2.setText(output);elseif(e.getSource

37、()=button3)first=data.getText();next=data1.getText();charout;chari1,i2;11 =first.toCharArray();12 =next.toCharArray();13 (i1.length!=i2.length)data1.setText("請輸入數(shù)值位長度相等的數(shù)字!");elseout=jian(i1,i2);output=newString(out);data3.setText(output);elseif(e.getSource()=button4)newNewclass(null);setV

38、isible(false);Form4.javapublicvoidwindowClosing(WindowEventvalidate();charjia(charin1,charin2)charout;charcarry=newcharin1.length+1;inti=0;out=in1carrycarry.length-1='0for(i=in1.length-1;i>=0;i-)e)setVisible(false););if(in1i='0'&&in2i='0'&&carryi+1=outi='0&

39、#39;carryi='0elseif(in1i='0'carryi='0'elseif(in1i='1'carryi='0'elseif(in1i='1'carryi='1'elseif(in1i='0'&&in2i='1'&&carry&&in2i='0'&&carry&&in2i='1'&&carry&&in2i

40、='0'&&carry'0')i+1='0')outii+1='0')outii+1='0')outii+1='1')outi="1'carryi='0"elseif(inii="0"&&n2i="1"&&carryi+1="1")outi="0"carryi="1"elseif(in1i="1"&

41、amp;&n2i="0"&&carryi+1="1")outi="0"carryi="1"elseif(in1i="1"&&in2i="1"&&carryi+1="1")outi="1"carryi="1"returnout;publicvoidactionPerformed(ActionEvente)if(e.getSource()=button1)data.

42、setText(null);data1.setText(null);data2.setText(null);data.requestFocusInWindow();elseif(e.getSource()=button2)Strings1=data.getText();Strings2=data1.getText();Stringbeichengshu=s1.substring(1);Stringsignal="0"Stringtemp=null;charin1=s1.toCharArray();charin2=s2.toCharArray();if(in1.length!

43、=in2.length)data1.setText("請輸入數(shù)值位長度相等的數(shù)字!");in10="1"&&in20=(in10="1"&&in20=elseif(in10="0"&&n20="0")|(1")signal="+"if(in10="0"&&in20="1")|0")signal="-"intcount=beicheng

44、shu.length()-1;charc=newcharcount+1;for(inti=0;i<=count;i+)ci="0"Stringstr=newStringbeichengshu.length()+1;str0=s1+newString(c);for(inti=beichengshu.length();i>0;i-)if(in2i="0")stri=newString(c)+newString(c);elseif(in2i="1")stri=beichengshu+newString(c);for(inti=1

45、;i<=beichengshu.length();i+)intk;strcharbuwei=for(k=0;k<ibuweik="0"i=newString(buwei)+newchari;k+);stri.substring(0,stri.length()-i);temp=newString(c)+newString(c);charresult=temp.toCharArray();for(inti=1;i<str.length;i+)charjial=stri.toCharArray();result=jia(result,jia1);temp=sig

46、nal+newString(result);data2.setText(temp);elseif(e.getSource()=button3)newNewclass(null);setVisible(false);Form5.javapublicvoidwindowClosing(WindowEvente)setVisible(false););validate();Stringcalculate(Strings1,Strings2)charac='0'chara1=s1.toCharArray(),for(inti=a1.length-1;a2=s2.toCharArray(

47、);i>=0;i-)if(a1i='0'&&a2i='0'&&ac='0')a2i='0'ac='0'elseif(a1i='0'&&a2i='0'&&ac=a2i='1'ac='0'elseif(a1i='0'&&a2i='1'&&ac=a2i='1'ac='0'elseif(a1i=&

48、#39;1'&&a2i='0'&&ac=a2i='1'ac='0'elseif(a1i='0'&&a2i='1'&&ac=a2i='0'ac='1'elseif(a1i='1'&&a2i='1'&&ac=a2i='0'ac='1'elseif(a1i='1'&&a2i='0

49、9;&&ac=a2i='0'ac='1'elseif(a1i='1'&&a2i='1'&&ac=a2i='1'ac='1'returnnewString(a2);'1')'0')'0')'1')'0')'1')'1')publicStringjiemaQiubu(Strings)if(s.startsWith("0")|s

50、.startsWith("1")s="00"+s;if(s.startsWith(s="00"+if(s.startsWith("+")s.substring(1)"-")Stringtemp=s.substring(1,s.lastIndexOf("1");charc=temp.toCharArray();for(inti=0;i<c.length;i+)if(ci='0')ci='1"elseci="0"temp

51、=newString(c);s="11"+temp+s.substring(s.lastIndexOf("1");returns;publicStringweishuQiubu(Strings)if(s.startsWith("0")Stringstr=s.substring(2).replaceAll("1","0");s="00"+s.substring(2)+str;if(s.startsWith("+")Stringstr=s.substring(

52、3).replaceAll("1","0");0");s="00"+s.substring(3)+str;if(s.startsWith("-")Stringtemp=null,str=s.substring(3).replaceAll("1temp=s.substring(3,s.lastIndexOf("1");charc=temp.toCharArray();for(inti=0;i<c.length;i+)if(ci='0')ci='1&

53、quot;elseci='0"temp=newString(c);s="11"+temp+returns;publicinttoSubstract(Strings.substring(s.lastIndexOf(sj1,Stringsj2)1")+str;intsum=0,signal=0;charcj2=sj2.substring(0,sj2.lastIndexOf("1").toCharArray();for(inti=0;i<cj2.length;i+)if(cj2i="0")cj2i=&quo

54、t;1"elsecj2i="0"sj2=newString(cj2)+sj2.substring(sj2.lastIndexOf("1");Stringtemp=calculate(sj1,sj2);if(temp.startsWith("00")signal=1;temp=temp.substring(2);if(temp.startsWith("11")signal=-1;Stringstr=temp.substring(2,temp.lastIndexOf("1");charc=str.toCharArray();for(inti=0;i<c.length;i+)ci='1'elseci='0'temp=newString(c)+temp.substring(temp.lastIndexOf("1");elseJOptionPane.showMessageDialog(this,"對階時(shí)溢出!","錯(cuò)誤",JOptionPane.ERROR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論