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

下載本文檔

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

文檔簡(jiǎn)介

1、 課程設(shè)計(jì)說(shuō)明書(shū)計(jì)算機(jī)組成原理算法實(shí)現(xiàn)(五)1 課程設(shè)計(jì)目的本課程設(shè)計(jì)是在學(xué)完本課程教學(xué)大綱規(guī)定的全部?jī)?nèi)容、完成所有實(shí)踐環(huán)節(jié)的基礎(chǔ)上,旨在深化學(xué)生學(xué)習(xí)的計(jì)算機(jī)組成原理課程基本知識(shí),進(jìn)一步領(lǐng)會(huì)計(jì)算機(jī)組成原理的一些算法,并進(jìn)行具體實(shí)現(xiàn),提高分析問(wèn)題、解決問(wè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ù)的單符號(hào)位補(bǔ)碼加減運(yùn)算、定點(diǎn)整數(shù)的原碼一位乘法運(yùn)算和浮點(diǎn)數(shù)的加減運(yùn)算。3 功能模塊詳細(xì)設(shè)計(jì)3.1 主窗體設(shè)計(jì)圖3-1主界面圖系統(tǒng)進(jìn)入(主)窗體的設(shè)計(jì):菜單需要在輸入口令正確后方可激活使用??诹钶斎脲e(cuò)誤時(shí)要給出重新

2、輸入口令的提示,三次口令輸入錯(cuò)誤應(yīng)該禁止使用。由于本次課程設(shè)計(jì)所用的語(yǔ)言是Java,在對(duì)應(yīng)主窗口的主類中設(shè)計(jì)主窗口的樣式,及個(gè)對(duì)應(yīng)按鈕的功能,根據(jù)指導(dǎo)書(shū)的內(nèi)容布局各個(gè)Button,本次設(shè)計(jì)主窗口共有六個(gè)按鈕,其中Button1對(duì)應(yīng)確認(rèn),其余的分別對(duì)五個(gè)功能按鈕。除此之外,各按鈕標(biāo)簽都已在指導(dǎo)書(shū)中給出,留出白色的輸入口令的窗口。運(yùn)行程序的主界面如圖3-3: 圖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ù)的單符號(hào)位補(bǔ)碼加減運(yùn)算、定點(diǎn)整數(shù)的Form4.java實(shí)現(xiàn)定點(diǎn)整數(shù)

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

4、來(lái)表示相應(yīng)的數(shù),形成了各種數(shù)據(jù)的存儲(chǔ)和表示方法,這些編碼稱為機(jī)器碼。常用的機(jī)器碼有原碼、反碼、補(bǔ)碼和移碼。a)原碼:原碼的數(shù)值部分是該數(shù)的絕對(duì)值,最高位表示符號(hào)位,最高位為0是正數(shù),最高位為1是負(fù)數(shù)。b )反碼:正數(shù)的反碼等于原碼,負(fù)數(shù)的反碼等于除符號(hào)位外其余二進(jìn)制數(shù)碼0變成1,1變成0。正數(shù): x反 = x原 = x ;負(fù)數(shù): 符號(hào)位不變,其余變反c)補(bǔ)碼:正數(shù)的補(bǔ)碼等于原碼,負(fù)數(shù)的補(bǔ)碼等于反碼加1。正數(shù): x補(bǔ)= x原 ;負(fù)數(shù): x補(bǔ)= x反 +1d)移碼:是符號(hào)位取反的補(bǔ)碼,一般用做浮點(diǎn)數(shù)的階碼,引入的目的是為了保證浮點(diǎn)數(shù)的機(jī)器碼為全0。3.2.3定點(diǎn)整數(shù)的單符號(hào)位補(bǔ)碼加減運(yùn)算進(jìn)行定點(diǎn)整

5、數(shù)單符號(hào)位補(bǔ)碼加減法的實(shí)現(xiàn)時(shí)都是在主窗體選擇對(duì)應(yīng)的菜單項(xiàng)后進(jìn)入對(duì)應(yīng)窗體再進(jìn)行具體操作。操作時(shí)首先選擇“輸入”按扭輸入?yún)⑴c運(yùn)算的數(shù)據(jù),然后再選操作按扭。如圖3-6 圖3-6定點(diǎn)整數(shù)補(bǔ)碼加減定點(diǎn)整數(shù)單符號(hào)位補(bǔ)碼加減法的實(shí)現(xiàn),輸入按鈕,刪除所有數(shù)據(jù)并將光標(biāo)移到第一個(gè)輸入窗口里面,開(kāi)始輸入,注意是補(bǔ)碼輸入,實(shí)現(xiàn)定點(diǎn)整數(shù)加減法時(shí),定義了一個(gè)carry數(shù)組記錄每位的進(jìn)位,carry最后一位初值為0,carry長(zhǎng)度比輸入大1位,用多重選擇語(yǔ)句嵌套使用,羅列兩數(shù)第i位及上位進(jìn)位的狀況,輸出結(jié)果記錄在outi中,第i位進(jìn)位記錄在carryi中,當(dāng)最高數(shù)值位進(jìn)位與符號(hào)位進(jìn)位不同時(shí)表溢出。值得一提的是,加一個(gè)負(fù)數(shù)和

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

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

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

9、定點(diǎn)整數(shù)原碼乘法設(shè)置輸出數(shù)組out與進(jìn)位標(biāo)志數(shù)組carry,carry最后一位初值為0, carry長(zhǎng)度比輸入大1位。對(duì)輸入的兩個(gè)字符串仿照并行乘法器的工作原理,將乘法轉(zhuǎn)化為加法。使用循環(huán)語(yǔ)句,按位相乘,再做原碼加法。由于是帶一位符號(hào)位的原碼乘法,要得到運(yùn)算結(jié)果的符號(hào)位,就要對(duì)in10和in20進(jìn)行判斷:if (in10 = 0 & in20 = 0) | (in10 = 1 & in20 = 1) signal = +; if (in10 = 0 & in20 = 1)| (in10 = 1 & in20 = 0) signal = -;返回按鈕。算法的原理:在定點(diǎn)計(jì)算機(jī)中,兩個(gè)原碼表示的數(shù)

10、相乘的運(yùn)算規(guī)則是:乘積的符號(hào)位由兩數(shù)的符號(hào)位按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積。設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)小數(shù)表示(定點(diǎn)整數(shù)也同樣適用) 被乘數(shù) 原f .n110 乘數(shù) 原f .n110 則乘積 原(ff)(0.n110)(0.n110) 式中,f為被乘數(shù)符號(hào),f為乘數(shù)符號(hào)。 機(jī)器算法: 機(jī)器中一種方法是多次采用”加法移位“的方法來(lái)完成,稱為串行乘法器,它的硬件結(jié)構(gòu)簡(jiǎn)單,但是速度慢,目前廣泛使用的是流水式陣列乘法器,稱為并行乘法器。無(wú)符號(hào)數(shù)m乘以n會(huì)產(chǎn)生m*n個(gè)位積,出現(xiàn)m+n個(gè)列和,并行乘法器的關(guān)鍵是快速產(chǎn)生m*n個(gè)位積,對(duì)位積進(jìn)行相加運(yùn)算產(chǎn)生m+n個(gè)列和。第一步:位積的產(chǎn)生

11、觀察乘法運(yùn)算0*00,0*10,1*00,1*11 相當(dāng)于:ab 。所以m*n個(gè)位積可以由m*n個(gè)與門(mén)并行產(chǎn)生。第二步:列和的產(chǎn)生:利用全加器3.2.5浮點(diǎn)數(shù)的加減運(yùn)算進(jìn)行定點(diǎn)整數(shù)單符號(hào)位補(bǔ)碼加減法、定點(diǎn)整數(shù)原碼乘法、浮點(diǎn)加減法的實(shí)現(xiàn)時(shí)都是在主窗體選擇對(duì)應(yīng)的菜單項(xiàng)后進(jìn)入對(duì)應(yīng)窗體再進(jìn)行具體操作。操作時(shí)首先選擇“輸入”按扭輸入?yún)⑴c運(yùn)算的數(shù)據(jù),然后再選操作按扭。如圖3-8圖3-8浮點(diǎn)加減法運(yùn)算數(shù)據(jù)輸入分為階碼和尾數(shù),將兩個(gè)數(shù)的階碼和尾數(shù)對(duì)應(yīng)的變形補(bǔ)碼表示出來(lái),比較價(jià)碼大小并完成對(duì)階即小階向大階看齊,若對(duì)階時(shí)發(fā)生溢出則發(fā)出提醒,統(tǒng)一階碼后,采用規(guī)格化進(jìn)行尾數(shù)求和,對(duì)尾數(shù)進(jìn)行舍入處理,判斷尾數(shù)最末尾情況

12、,用Replace語(yǔ)句實(shí)現(xiàn)粗略舍入處理。最后進(jìn)行變形補(bǔ)碼還原。算法的原理:浮點(diǎn)數(shù)的加減法運(yùn)算分為六個(gè)步驟:a)0操作數(shù)檢查浮點(diǎn)加減運(yùn)算過(guò)程比定點(diǎn)運(yùn)算過(guò)程復(fù)雜。如果判知兩個(gè)操作數(shù)或中有一個(gè)數(shù)為0,即可得知運(yùn)算結(jié)果而沒(méi)有必要再進(jìn)行后續(xù)的一系列操作以節(jié)省運(yùn)算時(shí)間。0操作數(shù)檢查步驟則用來(lái)完成這一功能。參加加法運(yùn)算的數(shù)據(jù)都是非零,進(jìn)入下一步。b)比較價(jià)碼大小并完成對(duì)階 為了便于直觀理解,假設(shè)兩數(shù)均以補(bǔ)碼表示,階碼采用雙符號(hào)位,尾數(shù)采用單符號(hào)位。 兩浮點(diǎn)數(shù)進(jìn)行加減,首先要看兩數(shù)的階碼是否相同,若二數(shù)階碼不同,表示小數(shù)點(diǎn)位置沒(méi)有對(duì)齊,此時(shí)必須使二數(shù)階碼相同,這個(gè)過(guò)程叫作對(duì)階。對(duì)階操作規(guī)定使尾數(shù)右移,尾數(shù)右移

13、后階碼作相應(yīng)增加,因此對(duì)階時(shí),總是使小階向大階看齊。c)尾數(shù)進(jìn)行加減運(yùn)算 對(duì)階結(jié)束后,即可進(jìn)行尾數(shù)的求和運(yùn)算。不論加法運(yùn)算還是減法運(yùn)算,都按加法進(jìn)行操作(減法利用補(bǔ)碼減法轉(zhuǎn)換成補(bǔ)碼的加法來(lái)做),其方法與定點(diǎn)加減法運(yùn)算完全一樣。d)結(jié)果規(guī)格化 采用雙符號(hào)位表示尾數(shù)時(shí),如果兩符號(hào)位為01或10時(shí),應(yīng)將結(jié)果尾數(shù)右移一位,階碼加1(叫“右規(guī)”)。 如果尾數(shù)最高數(shù)值位與符號(hào)位相同,應(yīng)將尾數(shù)左移,階碼減,直至數(shù)值位最高位與符號(hào)位相反(叫“左規(guī)”)。e)舍入運(yùn)算 在對(duì)階向右規(guī)格化,尾數(shù)向右移位,這樣被右移的尾數(shù)的低位部分會(huì)被丟掉,從而造成一定誤差,要進(jìn)行舍入處理。 簡(jiǎn)單的舍入方法有兩種:一種是“0舍1入”法

14、,即如果右移時(shí)被丟掉數(shù)位的最高位為0則舍去,為1則將尾數(shù)的末位做加加1運(yùn)算。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末尾恒置1。f)判斷結(jié)果是否溢出 階碼為00 011,階碼的符號(hào)位為00,根據(jù)補(bǔ)碼的雙符號(hào)檢測(cè)溢出的方法確定階碼不溢出。4、設(shè)計(jì)小結(jié)通過(guò)這次的計(jì)算機(jī)組成原理的課程設(shè)計(jì),把我很多不懂的內(nèi)容又學(xué)習(xí)了一遍,又鞏固了很多。使我對(duì)計(jì)算機(jī)的認(rèn)識(shí)有了更進(jìn)一步的加深和認(rèn)知。在這為期一周的課程設(shè)計(jì)的期間內(nèi),在進(jìn)行課程設(shè)計(jì)的過(guò)程中,我不僅鞏固了以往所學(xué)過(guò)的知識(shí),還學(xué)到了許多在課堂上所學(xué)不到的東西,比如動(dòng)手能力,實(shí)際問(wèn)題的解決能力和與團(tuán)隊(duì)中成員的團(tuán)隊(duì)協(xié)作與配合的能力,這都使我受益匪淺。但是我

15、自己有很多不會(huì)的知識(shí)點(diǎn),有很大一部分是同學(xué)們告訴我的。也有很多是自己在書(shū)本上學(xué)習(xí)到得當(dāng)初在學(xué)習(xí)的時(shí)候并沒(méi)有好好的學(xué)習(xí)所在做這個(gè)的時(shí)候比較困難。經(jīng)過(guò)了這次的課程設(shè)計(jì),我想,對(duì)于我日后的計(jì)算機(jī)的相關(guān)的學(xué)習(xí)肯定會(huì)有諸多助益與影響,為將來(lái)的學(xué)習(xí)生活打下了堅(jiān)實(shí)的基礎(chǔ)。以后在遇到這些就不會(huì)無(wú)從下手了。 參考文獻(xiàn)1 白中英. 計(jì)算機(jī)組成原理(第五版)M. 北京: 科學(xué)出版社, 2010.2吳萍. java程序設(shè)計(jì) (第一版) M. 北京:清華大學(xué)出版社2006. 附錄 NewClass.java public static void main(String args) new Newclass(計(jì)算機(jī)組成原

16、理);public void actionPerformed(ActionEvent e) String s = new String(000);if (e.getSource() = button1) while (i=0&m 3) JOptionPane.showMessageDialog(this, 您三次口令錯(cuò)誤,確定后退出!, 警告,JOptionPane.ERROR_MESSAGE);System.exit(0);if (i = 1) if (e.getSource() = m1) Form2 s1 = new Form2();s1.setVisible(true); else i

17、f (e.getSource() = m2) Form3 f1 = new Form3();f1.setTitle(定點(diǎn)整數(shù)單符號(hào)位補(bǔ)碼加減);f1.setVisible(true); else if (e.getSource() = m3) Form4 f2 = new Form4();f2.setTitle(定點(diǎn)整數(shù)補(bǔ)乘法);f2.setVisible(true); else if (e.getSource() = m4) Form5 f5 = new Form5();f5.setVisible(true); Form2.java public void mouseClicked(Mous

18、eEvent e) Component com = null;if (e.getSource() = button2) com = (Component) e.getSource();e = SwingUtilities.convertMouseEvent(com, e, this); String s = text1.getText();boolean boo = s.startsWith(0, 0);if (boo = true) n1 = s.length();s1 = s.substring(1, n1);text2.setText(+ + s1); else n1 = s.lengt

19、h();s1 = s.substring(1, n1);text2.setText(- + s1); else if (e.getSource() = button1) text1.setText();if (e.getSource() = button3) s = text1.getText();boolean boo = s.startsWith(0, 0);if (boo = true) n1 = s.length();s1 = s.substring(1, n1);text2.setText(+ + s1); else n1 = s.length();s1 = s.substring(

20、1, n1);char a = s1.toCharArray();for (i = 0; i = a.length - 1; i+) if (ai = 0)ai = 1;else if (ai = 1)ai = 0;for (i = 0; i = a.length - 1; i+) s1 = String.valueOf(a);text2.setText(- + s1);if (e.getSource() = button4) s = text1.getText();boolean boo = s.startsWith(0, 0);if (boo = true) n1 = s.length()

21、;s1 = s.substring(1, n1);text2.setText(+ + s1); else n1 = s.length();s1 = s.substring(1, n1);j = s1.lastIndexOf(1) + 1;s1 = s.substring(1, j);char a = s1.toCharArray();for (i = 0; i = a.length - 1; i+) if (ai = 0)ai = 1;else if (ai = 1)ai = 0;for (i = 0; i = a.length - 1; i+) s1 = String.valueOf(a);

22、temp = s.substring(j, n1);text2.setText(- + s1 + temp);if (e.getSource() = button5) com = (Component) e.getSource();e = SwingUtilities.convertMouseEvent(com, e, this);String s = text1.getText();boolean boo = s.startsWith(0, 0);if (boo = false) n1 = s.length();s1 = s.substring(1, n1);text2.setText(+

23、+ s1); else n1 = s.length();s1 = s.substring(1, n1);j = s1.lastIndexOf(1) + 1;s1 = s.substring(1, j);char a = s1.toCharArray();for (i = 0; i = a.length - 1; i+) if (ai = 0)ai = 1;else if (ai = 1)ai = 0;for (i = 0; i = a.length - 1; i+) s1 = String.valueOf(a);temp = s.substring(j, n1);text2.setText(-

24、 + s1 + temp);if (e.getSource() = button6) com = (Component) e.getSource();e = SwingUtilities.convertMouseEvent(com, e, this);Newclass pp = new Newclass(null);setVisible(false);pp.setVisible(true); For3.java public void windowClosing(WindowEvent e) setVisible(false););validate();char bu(char in) cha

25、r c = in0;if (c = 1) char carry = 0;int i;char temp = in;for (i = 1; i = 0; i-) if (tempi = 0 & carry = 0) tempi = 0;carry = 0; else if (tempi = 0 & carry = 1) tempi = 1;carry = 0; else if (tempi = 1 & carry = 0) tempi = 1;carry = 0; else if (tempi = 1 & carry = 1) tempi = 0;carry = 1;in = temp;retu

26、rn in;char jia(char in1, char in2) char out;char carry = new charin1.length + 1; int i = 0;out = in1;carrycarry.length - 1 = 0;for (i = in1.length - 1; i = 0; i-) if (in1i = 0 & in2i = 0 & carryi + 1 = 0) outi = 0;carryi = 0; else if (in1i = 0 & in2i = 1 & carryi + 1 = 0) outi = 1;carryi = 0; else i

27、f (in1i = 1 & in2i = 0 & carryi + 1 = 0) outi = 1;carryi = 0; else if (in1i = 1 & in2i = 1 & carryi + 1 = 0) outi = 0;carryi = 1; else if (in1i = 0 & in2i = 0 & carryi + 1 = 1) outi = 1;carryi = 0; else if (in1i = 0 & in2i = 1 & carryi + 1 = 1) outi = 0;carryi = 1; else if (in1i = 1 & in2i = 0 & car

28、ryi + 1 = 1) outi = 0;carryi = 1; else if (in1i = 1 & in2i = 1 & carryi + 1 = 1) outi = 1;carryi = 1;if (carry0 != carry1) String temp = new String(溢出);out = temp.toCharArray();return out;char jian(char in1, char in2) if (in20 = 1) in2 = bu(in2);in20 = 0; else if (in20 = 0) in20 = 1;in2 = bu(in2);ch

29、ar o = jia(in1, in2); return o;public void actionPerformed(ActionEvent e) if (e.getSource() = button1) data.setText(null);data1.setText(null);data2.setText(null);data3.setText(null);data.requestFocusInWindow(); else if (e.getSource() = button2) first = data.getText();next = data1.getText();char out;

30、char i1, i2;i1 = first.toCharArray();i2 = next.toCharArray();if (i1.length != i2.length)data1.setText(請(qǐng)輸入數(shù)值位長(zhǎng)度相等的數(shù)字!);else out = jia(i1, i2);output = new String(out);data2.setText(output); else if (e.getSource() = button3) first = data.getText();next = data1.getText();char out;char i1, i2;i1 = first

31、.toCharArray();i2 = next.toCharArray();if (i1.length != i2.length)data1.setText(請(qǐng)輸入數(shù)值位長(zhǎng)度相等的數(shù)字!);else out = jian(i1, i2);output = new String(out);data3.setText(output); else if (e.getSource() = button4)new Newclass(null);setVisible(false); Form4.javapublic void windowClosing(WindowEvent e) setVisible

32、(false););validate();char jia(char in1, char in2) char out;char carry = new charin1.length + 1; int i = 0;out = in1;carrycarry.length - 1 = 0;for (i = in1.length - 1; i = 0; i-) if (in1i = 0 & in2i = 0 & carryi + 1 = 0) outi = 0;carryi = 0; else if (in1i = 0 & in2i = 1 & carryi + 1 = 0) outi = 1;car

33、ryi = 0; else if (in1i = 1 & in2i = 0 & carryi + 1 = 0) outi = 1;carryi = 0; else if (in1i = 1 & in2i = 1 & carryi + 1 = 0) outi = 0;carryi = 1; else if (in1i = 0 & in2i = 0 & carryi + 1 = 1) outi = 1;carryi = 0; else if (in1i = 0 & in2i = 1 & carryi + 1 = 1) outi = 0;carryi = 1; else if (in1i = 1 &

34、 in2i = 0 & carryi + 1 = 1) outi = 0;carryi = 1; else if (in1i = 1 & in2i = 1 & carryi + 1 = 1) outi = 1;carryi = 1;return out;public void actionPerformed(ActionEvent e) if (e.getSource() = button1) data.setText(null);data1.setText(null);data2.setText(null);data.requestFocusInWindow(); else if (e.ge

35、tSource() = button2) String s1 = data.getText();String s2 = data1.getText();String beichengshu = s1.substring(1);String signal = 0;String temp = null;char in1 = s1.toCharArray();char in2 = s2.toCharArray();if (in1.length != in2.length)data1.setText(請(qǐng)輸入數(shù)值位長(zhǎng)度相等的數(shù)字!);else if (in10 = 0 & in20 = 0)| (in1

36、0 = 1 & in20 = 1)signal = +;if (in10 = 0 & in20 = 1)| (in10 = 1 & in20 = 0)signal = -;int count = beichengshu.length() - 1;char c = new charcount + 1;for (int i = 0; i 0; i-) if (in2i = 0) stri = new String(c) +newString(c); else if (in2i = 1) stri = beichengshu + new String(c);for (int i = 1; i = b

37、eichengshu.length(); i+) int k;char buwei = new chari;for (k = 0; k i; k+)buweik = 0;stri = new String(buwei)+ stri.substring(0, stri.length() - i);temp = new String(c) + new String(c);char result = temp.toCharArray();for (int i = 1; i = 0; i-) if (a1i = 0 & a2i = 0 & ac = 0) a2i = 0;ac = 0; else if

38、 (a1i = 0 & a2i = 0 & ac = 1) a2i = 1;ac = 0; else if (a1i = 0 & a2i = 1 & ac = 0) a2i = 1;ac = 0; else if (a1i = 1 & a2i = 0 & ac = 0) a2i = 1;ac = 0; else if (a1i = 0 & a2i = 1 & ac = 1) a2i = 0;ac = 1; else if (a1i = 1 & a2i = 1 & ac = 0) a2i = 0;ac = 1; else if (a1i = 1 & a2i = 0 & ac = 1) a2i =

39、 0;ac = 1; else if (a1i = 1 & a2i = 1 & ac = 1) a2i = 1;ac = 1; return new String(a2);public String jiemaQiubu(String s)if (s.startsWith(0) | s.startsWith(1) s = 00 + s;if (s.startsWith(+) s = 00 + s.substring(1)if (s.startsWith(-) String temp = s.substring(1, s.lastIndexOf(1);char c = temp.toCharAr

40、ray();for (int i = 0; i c.length; i+) if (ci = 0)ci = 1;elseci = 0;temp = new String(c);s = 11 + temp + s.substring(s.lastIndexOf(1);return s;public String weishuQiubu(String s) if (s.startsWith(0) String str = s.substring(2).replaceAll(1, 0);s = 00 + s.substring(2) + str;if (s.startsWith(+) String

41、str = s.substring(3).replaceAll(1, 0);s = 00 + s.substring(3) + str;if (s.startsWith(-) String temp = null, str = s.substring(3).replaceAll(1, 0);temp = s.substring(3, s.lastIndexOf(1);char c = temp.toCharArray();for (int i = 0; i c.length; i+) if (ci = 0)ci = 1;elseci = 0;temp = new String(c);s = 11 + temp + s.substring(s.lastIndexOf(1) + str;return s;public int toSubstract(String sj1, String sj2)int sum = 0, signal = 0;char cj2 = sj2.substring(0, sj2.lastIndexOf(1).toCharArray();for (int i = 0; i cj2.length; i+) if (cj2i = 0)cj2i = 1;elsecj2i = 0;sj2 =

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論