計算機組成原理課程設計--計算機組成原理算法實現(xiàn)_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  計算機組成原理</b></p><p><b>  課程設計報告</b></p><p><b>  目 錄</b></p><p>  一、課程設計的目的2</p><p>  二、課程設計的內(nèi)容2</p><p&g

2、t;<b>  1.題目:2</b></p><p><b>  2.功能:2</b></p><p><b>  3.實現(xiàn)步驟:2</b></p><p>  三、主要技術指標及特點2</p><p><b>  四、設計小結(jié)2</b><

3、/p><p><b>  五、參考文獻2</b></p><p><b>  一、課程設計的目的</b></p><p>  本課程設計是在學完本課程教學大綱規(guī)定的全部內(nèi)容、完成所有實踐環(huán)節(jié)的基礎上,旨在深化學生學習的計算機組成原理課程基本知識,進一步領會計算機組成原理的一些算法,并進行具體實現(xiàn),提高分析問題、解決問題的綜合

4、應用能力。</p><p><b>  二、課程設計的內(nèi)容</b></p><p>  1.題目:計算機組成原理算法實現(xiàn)(三)</p><p>  2.功能:課題③能夠?qū)崿F(xiàn)邏輯運算(邏輯非、邏輯加、邏輯乘、邏輯異)、定點整數(shù)的單符號位補碼加減運算、定點整數(shù)的原碼一位乘法運算和浮點數(shù)的加減運算。</p><p><b

5、>  3.實現(xiàn)步驟:</b></p><p>  (1)系統(tǒng)進入(主)窗體的設計:菜單需要在輸入口令正確后方可激活使用。口令輸入錯誤時要給出重新輸入口令的提示,三次口令輸入錯誤應該禁止使用。</p><p> ?。?)選擇主窗體中“邏輯運算”時進入下圖所示的窗體:</p><p>  在上面的窗體中按“輸入”按扭時,將輸入焦點設置為最上面的一個文本

6、框上。依次輸入兩個(或一個)二進制數(shù)(如11001100或00111010)后,按“邏輯非”、“邏輯加”、“邏輯乘”或“邏輯異”按扭中的任一個后,將在第三個文本框中顯示對應操作的結(jié)果。選擇“返回”按扭時回到主窗體。</p><p> ?。?)進行定點整數(shù)單符號位補碼加減法的實現(xiàn)時都是在主窗體選擇對應的菜單項后進入對應窗體再進行具體操作。操作時首先選擇“輸入”按扭輸入?yún)⑴c運算的數(shù)據(jù),然后再選操作按扭。各自窗體的參考

7、圖如下所示:</p><p>  在第一個數(shù)中輸入+11001100在第二個數(shù)中輸入-01011100點擊加法按鈕和減法按鈕可得加法</p><p><b>  結(jié)果和減法結(jié)果</b></p><p>  進行定點整數(shù)定點整數(shù)原碼乘法的實現(xiàn)時都是在主窗體選擇對應的菜單項后進入對應窗體再進行具體操作。操作時首先選擇“輸入”按扭輸入?yún)⑴c運算的數(shù)據(jù),

8、然后再選操作按扭。各自窗體的參考圖如下所示:</p><p>  進行定點整數(shù)單符號位補碼加減法、定點整數(shù)原碼乘法、浮點加減法的實現(xiàn)時都是在主窗體選擇對應的菜單項后進入對應窗體再進行具體操作。操作時首先選擇“輸入”按扭輸入?yún)⑴c運算的數(shù)據(jù),然后再選操作按扭。各自窗體的參考圖如下所示:</p><p>  如需幫助,可按幫助按鈕,得到以下窗口:</p><p>  三、

9、主要技術指標及特點</p><p><b>  數(shù)據(jù)表示方法:</b></p><p>  計算機中常用的數(shù)據(jù)表示格式有兩種,一是定點格式,二是浮點格式。</p><p> ?。?)定點表示:約定機器中所有數(shù)據(jù)的小數(shù)點位置是固定的。由于約定在固定的位置,所以小數(shù)點就不再使用記號“.”來表示。 </p><p>  (2)

10、浮點表示:定點數(shù)表示的數(shù)的范圍有限,為了擴展數(shù)的表示范圍,按照科學記數(shù)法表示數(shù)據(jù)的方式,任何一個二進制數(shù)N都可以表示成如下的格式:</p><p><b>  N=M*2e</b></p><p>  M :尾數(shù),是一個純小數(shù),決定數(shù)據(jù)的表示精度 </p><p>  e :指數(shù),又稱為階碼,是一個整數(shù),決定數(shù)據(jù)的表示范圍</p>

11、<p><b>  數(shù)的機器碼表示:</b></p><p>  一般書寫所表示的數(shù)據(jù)稱為真值,在計算機中為了表示符號位,通常把符號位和數(shù)字位一起編碼來表示相應的數(shù),形成了各種數(shù)據(jù)的存儲和表示方法,這些編碼稱為機器碼。常用的機器碼有原碼、反碼、補碼和移碼。</p><p> ?。?)原碼:原碼的數(shù)值部分是該數(shù)的絕對值,最高位表示符號位,最高位為0是正數(shù),最

12、高位為1是負數(shù)。</p><p>  (2)反碼:正數(shù)的反碼等于原碼,負數(shù)的反碼等于除符號位外其余二進制數(shù)碼0變成1,1變成0。</p><p>  正數(shù): [x]反 = [x]原 = x</p><p>  負數(shù): 符號位不變,其余變反</p><p> ?。?)補碼:正數(shù)的補碼等于原碼,負數(shù)的補碼等于反碼加1。</p>&l

13、t;p>  正數(shù): [x]補= [x]原 </p><p>  負數(shù): [x]補= [x]反 +1</p><p><b>  定點加、減法運算:</b></p><p>  結(jié)論:任何兩數(shù)的補碼只和等于兩數(shù)只和的補碼</p><p><b>  補碼加法</b></p><

14、;p>  基本公式: [x]補 + [y]補 = [x+y]補 </p><p><b>  補碼減法</b></p><p>  基本公式: [x]補 - [y]補=[x]補 + [-y]補</p><p>  當負數(shù)用補碼表示后,符號位作為數(shù)據(jù)的一部分一起參加運算,運算器不用考慮參加加法運算的操作數(shù)的正負以及結(jié)果的正負,任意數(shù)的加法就

15、可以化作正數(shù)加法來作。</p><p>  溢出:在定點數(shù)機器中,數(shù)的大小超出了定點數(shù)能表示的范圍,叫溢出。</p><p> ?。?)在定點小數(shù)機中數(shù)的表示范圍是-1<x<1,如果運算過程中出現(xiàn)了大于1或者小于-1的情況。</p><p> ?。?)在定點整數(shù)機(8位)中數(shù)的表示范圍是-128<x<127,如果運算過程中出現(xiàn)了大于127或者

16、小于-128的情況。雙符號位法:將符號位擴展為2位,具體說就是對于正數(shù)兩個符號位是“00”,對于負數(shù)兩個符號位是“11”。兩個符號位都看作數(shù)碼一樣參加運算。兩個數(shù)相加后,其結(jié)果的符號位出現(xiàn)“01”或“10”兩種組合時,表示發(fā)生溢出。</p><p>  符號位“01”,上溢出</p><p>  符號位“10”,下溢出</p><p>  符號位“00”或者“11”

17、,未溢出</p><p>  從[y]補求[-y]補的法則是:</p><p>  對[y]補“包括符號位求反且最末位加1”,即可得到[-y]補</p><p><b>  定點乘法運算 :</b></p><p>  在定點計算機中,兩個原碼表示的數(shù)相乘的運算規(guī)則是:乘積的符號位由兩數(shù)的符號位按異或運算得到,而乘積的數(shù)

18、值部分則是兩個正數(shù)相乘之積。設n位被乘數(shù)和乘數(shù)用定點小數(shù)表示(定點整數(shù)也同樣適用) </p><p>  被乘數(shù)   [x]原=xf .xn-1…x1x0</p><p>  乘數(shù)   [y]原=yf .yn-1…y1y0</p><p><b>  則乘積</b></p><p>  [z]原=(xf⊕yf)+(0.x

19、n-1…x1x0)(0.yn-1…y1y0) </p><p>  式中,xf為被乘數(shù)符號,yf為乘數(shù)符號。 </p><p>  機器算法: 機器中一種方法是多次采用”加法-移位“的方法來完成,稱為串行乘法器,它的硬件結(jié)構簡單,但是速度慢,目前廣泛使用的是流水式陣列乘法器,稱為并行乘法器。無符號數(shù)m乘以n會產(chǎn)生m*n個位積,出現(xiàn)m+n個列和,并行乘法器的關鍵是快速產(chǎn)生m*n個位積,對位積

20、進行相加運算產(chǎn)生m+n個列和。</p><p><b>  第一步:位積的產(chǎn)生</b></p><p>  觀察乘法運算:0*0=0,0*1=0,1*0=0,1*1=1</p><p><b>  相當于:a∩b</b></p><p>  所以m*n個位積可以由m*n個與門并行產(chǎn)生。</p&

21、gt;<p>  第二步:列和的產(chǎn)生:利用全加器</p><p>  浮點數(shù)的加減法運算: </p><p>  浮點數(shù)的加減法運算分為六個步驟:</p><p><b> ?。?)0操作數(shù)檢查</b></p><p>  浮點加減運算過程比定點運算過程復雜。如果判知兩個操作數(shù)x或y中有一個數(shù)為0

22、,即可得知運算結(jié)果而沒有必要再進行后續(xù)的一系列操作以節(jié)省運算時間。0操作數(shù)檢查步驟則用來完成這一功能。</p><p>  參加加法運算的數(shù)據(jù)都是非零,進入下一步。</p><p> ?。?)比較價碼大小并完成對階</p><p>  為了便于直觀理解,假設兩數(shù)均以補碼表示,階碼采用雙符號位,尾數(shù)采用單符號位。 兩浮點數(shù)進行加減,首先要看兩數(shù)的階碼是否相同,若二數(shù)階

23、碼不同,表示小數(shù)點位置沒有對齊,此時必須使二數(shù)階碼相同,這個過程叫作對階。對階操作規(guī)定使尾數(shù)右移,尾數(shù)右移后階碼作相應增加,因此對階時,總是使小階向大階看齊。</p><p>  (3)尾數(shù)進行加減運算</p><p>  對階結(jié)束后,即可進行尾數(shù)的求和運算。不論加法運算還是減法運算,都按加法進行操作(減法利用補碼減法轉(zhuǎn)換成補碼的加法來做),其方法與定點加減法運算完全一樣。</p&g

24、t;<p><b> ?。?)結(jié)果規(guī)格化</b></p><p>  a. 采用雙符號位表示尾數(shù)時,如果兩符號位為01或10時,應將結(jié)果尾數(shù)右移一位,階碼加1(叫“右規(guī)”)。</p><p>  b. 如果尾數(shù)最高數(shù)值位與符號位相同,應將尾數(shù)左移,階碼減1,直至數(shù)值位最高位與符號位相反(叫“左規(guī)”)。</p><p><b&

25、gt;  (5)舍入運算</b></p><p>  在對階向右規(guī)格化,尾數(shù)向右移位,這樣被右移的尾數(shù)的低位部分會被丟掉,從而造成一定誤差,要進行舍入處理。</p><p>  簡單的舍入方法有兩種:一種是“0舍1入”法,即如果右移時被丟掉數(shù)位的最高位為0則舍去,為1則將尾數(shù)的末位做加加1運算。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末尾恒置1。</p>

26、<p>  (6)判斷結(jié)果是否溢出</p><p>  階碼為00 011,階碼的符號位為00,根據(jù)補碼的雙符號檢測溢出的方法確定階碼不溢出。</p><p><b>  登陸窗口流程圖</b></p><p><b>  邏輯運算流程圖</b></p><p>  定點整數(shù)單符號位補碼

27、加減法流程圖</p><p>  定點整數(shù)的原碼乘法窗體流程圖</p><p><b>  附件</b></p><p><b>  主體窗口代碼如下:</b></p><p>  package zcyl3;</p><p>  import java.awt.*;<

28、;/p><p>  import java.awt.event.*;</p><p>  import javax.swing.JOptionPane;</p><p>  public class MainFrame extends Frame implements ActionListener </p><p><b&

29、gt;  {</b></p><p>  static int i=0; </p><p>  static int m=1;</p><p>  Label a1,a2,a22;</p><p>  TextField text1;</p><p>  Button button1,m1,

30、m2,m3,m4,m5;Font f;</p><p>  MainFrame(String s)</p><p><b>  {</b></p><p><b>  super(s);</b></p><p>  setLayout(null);</p><p>  f=n

31、ew Font("楷體",Font.BOLD,20);</p><p>  m1=new Button("邏輯運算");</p><p>  m2=new Button("定點整數(shù)單符號位補碼加減");</p><p>  m3=new Button("定點整數(shù)原碼一位乘法");<

32、/p><p>  m4=new Button("浮點加減法");</p><p>  m5=new Button("幫助");</p><p>  m1.addActionListener(this);</p><p>  m2.addActionListener(this);</p><

33、;p>  m3.addActionListener(this);</p><p>  m4.addActionListener(this);</p><p>  m5.addActionListener(this);</p><p>  m1.setBounds(10,30,120,25);</p><p>  m2.setBounds

34、(140,30,150,25);</p><p>  m3.setBounds(300,30,120,25);</p><p>  m4.setBounds(430,30,80,25);</p><p>  m5.setBounds(515,30,80,25);</p><p>  add(m1);add(m2);add(m3);add(m4

35、);add(m5);</p><p>  a1=new Label("計算機組成原理算法實現(xiàn)(三)",Label.CENTER);</p><p>  a2=new Label("輸入口令(學號):");</p><p>  a22=new Label("密碼正確,請選擇上面菜單進行操作",Label.C

36、ENTER);</p><p>  a1.setBounds(150,100,300,40);</p><p>  a1.setBackground(Color.WHITE);a1.setFont(f);</p><p>  a2.setBounds(150,200,90,25);</p><p>  a2.setBackground(Col

37、or.white);</p><p>  a22.setBounds(200,200,200,25);</p><p>  a22.setForeground(Color.white);</p><p>  a22.setBackground(Color.blue);</p><p>  a22.setVisible(false);</

38、p><p>  text1=new TextField(18);</p><p>  text1.setEchoChar('●');</p><p>  text1.setBounds(240,200,200,25);</p><p>  button1=new Button("確認");</p>

39、<p>  n1.setBounds(270,250,70,30);</p><p>  button1.addActionListener(this);</p><p>  add(a1);add(a2);add(a22);add(text1);add(button1);</p><p>  setBackground(Color.white);&l

40、t;/p><p>  setBounds(100,100,610,400);</p><p>  setVisible(true);</p><p>  validate();</p><p>  addWindowListener(new WindowAdapter()</p><p>  {public void

41、windowClosing(WindowEvent e)</p><p>  {System.exit(0);}</p><p><b>  });</b></p><p><b>  }</b></p><p>  public static void main(String args[])

42、</p><p><b>  {</b></p><p>  MainFrame zc=new MainFrame("計算機組成原理");</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEven

43、t e)</p><p><b>  {</b></p><p>  String s=new String("2");</p><p>  if(e.getSource()==button1)</p><p><b>  {</b></p><p> 

44、 while(i==0&&m<=3&&(!(text1.getText().equals(""))))</p><p><b>  { </b></p><p>  if(text1.getText().equals(s))</p><p><b>  {</b>

45、;</p><p><b>  i=1;</b></p><p>  JOptionPane.showMessageDialog(this, "口令正確,請選擇菜單欄的操作 </p><p>  ","正確",JOptionPane.INFORMATION_MESSAGE );</p>&l

46、t;p>  text1.setEnabled(false);</p><p>  text1.setVisible(false);</p><p>  a22.setVisible(true);</p><p>  a2.setVisible(false);</p><p><b>  }</b></p>

47、;<p><b>  else{ </b></p><p><b>  m++;</b></p><p>  JOptionPane.showMessageDialog(this, "您輸入的口令不正確","警告</p><p>  ",JOptionPane.WARN

48、ING_MESSAGE);</p><p>  text1.setText(null);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(m>3)</b></p><p><

49、b>  {</b></p><p>  JOptionPane.showMessageDialog(this,"您三次口令錯誤,已被禁用","警告</p><p>  ",JOptionPane.ERROR_MESSAGE);</p><p><b>  }</b></p>

50、<p><b>  }</b></p><p><b>  if(i==1)</b></p><p><b>  {</b></p><p>  if(e.getSource()==m1)</p><p><b>  {</b></p&g

51、t;<p>  luojiyunsuan s1=new luojiyunsuan("邏輯運算");</p><p>  s1.setVisible(true);</p><p><b>  }</b></p><p>  else if(e.getSource()==m2)</p><p

52、><b>  {</b></p><p>  zhengshujiajian f1=new zhengshujiajian();</p><p>  f1.setTitle("定點整數(shù)單符號位補碼加減");</p><p>  f1.setVisible(true);</p><p><

53、b>  }</b></p><p>  else if(e.getSource()==m3)</p><p><b>  {</b></p><p>  zhengshuchengfa f2=new zhengshuchengfa();</p><p>  f2.setTitle("定點整

54、數(shù)原碼一位乘法");</p><p>  f2.setVisible(true);</p><p><b>  }</b></p><p>  else if(e.getSource()==m4)</p><p><b>  {</b></p><p>  fudi

55、anyunsuan f5=new fudianyunsuan("浮點加減法");</p><p>  f5.setVisible(true);</p><p><b>  }</b></p><p>  else if(e.getSource()==m5)</p><p><b>  

56、{</b></p><p>  Help h1=new Help("幫助");</p><p>  h1.setVisible(true);</p><p><b>  }</b></p><p><b>  }</b></p><p>&

57、lt;b>  }</b></p><p><b>  }</b></p><p><b>  邏輯運算代碼如下:</b></p><p>  package zcyl3;</p><p>  import java.awt.*;</p><p>  impo

58、rt java.awt.event.*;</p><p>  import javax.swing.JOptionPane;</p><p>  public class luojiyunsuan extends Frame implements ActionListener</p><p><b>  {</b></p>

59、<p><b>  int me=0;</b></p><p>  Label b1,b2,b3,b4;Font f;</p><p>  TextField t1,t2,t3; </p><p>  Button button1,button2,button3,button4,button5,button6;</

60、p><p>  luojiyunsuan(String s)</p><p><b>  { </b></p><p>  super(s);setLayout(null);</p><p>  f=new Font("楷體",Font.BOLD,20);</p><p>

61、  b1=new Label(" 邏輯運算 ",Label.CENTER);</p><p>  b2=new Label("請輸入第一個數(shù):");</p><p>  b3=new Label("請輸入第二個數(shù):");</p><p>  b4=new Label("結(jié)果");<

62、/p><p>  b1.setBounds(180,100,250,40);</p><p>  b1.setFont(f);</p><p>  b1.setBackground(Color.white);</p><p>  b2.setBounds(100,200,120,25);</p><p>  b3.setB

63、ounds(100,250,120,25);</p><p>  b2.setBackground(Color.white);</p><p>  b3.setBackground(Color.white);</p><p>  b4.setBounds(100,300,120,25);</p><p>  t1=new TextField

64、(15);</p><p>  t2=new TextField(15);</p><p>  t3=new TextField(15);</p><p>  t1.setBounds(250,200,200,25);</p><p>  t2.setBounds(250,250,200,25);</p><p>

65、  t3.setBounds(250,300,200,25);</p><p>  button1=new Button("輸 入");button2=new Button("邏輯非");</p><p>  button3=new Button("邏輯加");button4=new Button("邏輯乘")

66、;</p><p>  button5=new Button("邏輯異");button6=new Button("返 回");</p><p>  button1.setBounds(80,350,70,25);button2.setBounds(160,350,70,25);</p><p>  button3.setBo

67、unds(240,350,70,25);button4.setBounds(320,350,70,25);</p><p>  button5.setBounds(400,350,70,25);button6.setBounds(480,350,70,25);</p><p>  setBounds(100,100,600,400);</p><p>  setBa

68、ckground(Color.white);</p><p>  add(b1);add(b2);add(b3);add(b4);add(t1);add(t2);add(t3);</p><p>  add(button1);add(button2);add(button3);add(button4);</p><p>  add(button5);add(butt

69、on6);</p><p>  button1.addActionListener(this);</p><p>  button2.addActionListener(this);</p><p>  button3.addActionListener(this);</p><p>  button4.addActionListener(t

70、his);</p><p>  button5.addActionListener(this);</p><p>  button6.addActionListener(this);</p><p>  validate();</p><p>  addWindowListener(new WindowAdapter()</p>

71、<p>  {public void windowClosing(WindowEvent e)</p><p>  {setVisible(false);}</p><p><b>  });</b></p><p><b>  }</b></p><p>  public vo

72、id actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if(e.getSource()==button1)</p><p><b>  { me=1;</b></p><p>  t1.requestFocusInWind

73、ow();</p><p><b>  }</b></p><p>  else if(me==1)</p><p><b>  {</b></p><p>  if(e.getSource()==button2)</p><p><b>  {</b>

74、;</p><p>  b4.setText("邏輯非:");</p><p>  String sg=t1.getText();</p><p>  int index=sg.indexOf("+");</p><p>  int l=sg.length();</p><p&g

75、t;  StringBuffer s=new StringBuffer(sg);</p><p>  for(int i=0;i<l;i++)</p><p><b>  {</b></p><p>  if (s.charAt(i)=='0')</p><p>  s.setCharAt(i,&#

76、39;1');</p><p><b>  else</b></p><p>  s.setCharAt(i,'0');</p><p><b>  }</b></p><p>  String ss=s.substring(index+1);</p><

77、p>  t3.setText(ss);</p><p><b>  }</b></p><p>  else if(e.getSource()==button3)</p><p><b>  {</b></p><p>  b4.setText("邏輯加:");</

78、p><p>  String sg=t1.getText();</p><p>  String sg2=t2.getText();</p><p>  if(sg.length()!=sg2.length())</p><p><b>  {</b></p><p>  JOptionPane.s

79、howMessageDialog(this, "您輸入的兩個參</p><p>  數(shù)長度不一樣","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b>  }</b></p><p><b>  else{</b></p>

80、<p>  int index=sg.indexOf("+");</p><p>  //String ss=sg.substring(index+1);</p><p>  StringBuffer s=new StringBuffer(sg);</p><p>  StringBuffer s2=new StringBuffer

81、(sg2);</p><p>  for(int i=0;i<sg.length();i++)</p><p><b>  { </b></p><p>  if(s.charAt(i)=='1'||s2.charAt(i)=='1')</p><p>  s.setCharAt

82、(i,'1');</p><p><b>  else</b></p><p>  s.setCharAt(i,'0');</p><p><b>  }</b></p><p>  String ss=s.substring(index+1);</p>

83、<p>  t3.setText(ss);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(e.getSource()==button4)</p><p><b>  {</b></p>

84、<p>  b4.setText("該數(shù)邏輯乘為:");</p><p>  String sg=t1.getText();</p><p>  String sg2=t2.getText();</p><p>  if(sg.length()!=sg2.length())</p><p><b>

85、;  {</b></p><p>  JOptionPane.showMessageDialog(this, "您輸入的兩個參</p><p>  數(shù)長度不一樣","警告對話框",JOptionPane.WARNING_MESSAGE);</p><p><b>  }</b></p&g

86、t;<p><b>  else{</b></p><p>  int index=sg.indexOf("+");</p><p>  //String ss=sg.substring(index+1);</p><p>  StringBuffer s=new StringBuffer(sg);</

87、p><p>  StringBuffer s2=new StringBuffer(sg2);</p><p>  for(int i=0;i<sg.length();i++)</p><p><b>  { </b></p><p>  if(s.charAt(i)=='1'&&s2

88、.charAt(i)=='1')</p><p>  s.setCharAt(i,'1');</p><p><b>  else</b></p><p>  s.setCharAt(i,'0');</p><p><b>  }</b></p&

89、gt;<p>  String ss=s.substring(index+1);</p><p>  t3.setText(ss);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(e.getSource()==bu

90、tton5)</p><p><b>  {</b></p><p>  b4.setText("該數(shù)的邏輯異為:");</p><p>  String sg=t1.getText();</p><p>  String sg2=t2.getText();</p><p>

91、;  if(sg.length()!=sg2.length())</p><p><b>  {</b></p><p>  JOptionPane.showMessageDialog(this, "您輸入的兩個參</p><p>  數(shù)長度不一樣","警告對話框",JOptionPane.WARNING

92、_MESSAGE);</p><p><b>  }</b></p><p><b>  else{</b></p><p>  int index=sg.indexOf("+");</p><p>  //String ss=sg.substring(index+1);<

93、;/p><p>  StringBuffer s=new StringBuffer(sg);</p><p>  StringBuffer s2=new StringBuffer(sg2);</p><p>  for(int i=0;i<sg.length();i++)</p><p><b>  { </b>&

94、lt;/p><p>  if(s.charAt(i)==s2.charAt(i))</p><p>  s.setCharAt(i,'0');</p><p><b>  else</b></p><p>  s.setCharAt(i,'1');</p><p>&l

95、t;b>  }</b></p><p>  String ss=s.substring(index+1);</p><p>  t3.setText(ss);</p><p><b>  }</b></p><p><b>  }</b></p><p> 

96、 else if(e.getSource()==button6)</p><p><b>  {</b></p><p>  setVisible(false);</p><p><b>  }</b></p><p><b>  }</b></p><

97、;p><b>  }</b></p><p><b>  }</b></p><p>  定點整數(shù)單符號位補碼加減法實現(xiàn)代碼如下:</p><p>  package zcyl3;</p><p>  import java.awt.*;</p><p>  imp

98、ort java.awt.event.*;</p><p>  public class zhengshujiajian extends Frame implements ActionListener</p><p><b>  {</b></p><p>  Font f; int me1=0; String ss1,ss2;

99、int r;</p><p>  Label l1,l2,l3,l4,l5;</p><p>  TextField d1,d2,d3,d4;</p><p>  Button bu1,bu2,bu3,bu4;</p><p>  zhengshujiajian()</p><p><b>  {<

100、;/b></p><p>  setLayout(null);</p><p>  f=new Font("楷體",Font.BOLD,20);</p><p>  l1=new Label("定點整數(shù)的單符號位補碼加減運算");</p><p>  l2=new Label("請輸入

101、第一個數(shù):");</p><p>  l3=new Label("請輸入第二個數(shù):");</p><p>  l4=new Label("加法結(jié)果為:");l5=new Label("減法結(jié)果為:");</p><p>  l1.setBackground(Color.white);</p&

102、gt;<p>  l1.setFont(f);</p><p>  l2.setBackground(Color.white);l3.setBackground(Color.white);</p><p>  l4.setBackground(Color.white);l5.setBackground(Color.white);</p><p>  d

103、1=new TextField(20);d2=new TextField(20);</p><p>  d3=new TextField(20);d4=new TextField(20);</p><p>  bu1=new Button("輸入");bu2=new Button("加法");</p><p>  bu

104、3=new Button("減法");</p><p>  bu4=new Button("返回");</p><p>  l1.setBounds(150,70,380,40);</p><p>  l2.setBounds(100,150,120,25);l3.setBounds(100,180,120,25);</

105、p><p>  l4.setBounds(100,210,120,25);l5.setBounds(100,240,120,25);</p><p>  d1.setBounds(250, 150,200,25);d2.setBounds(250, 180,200,25);</p><p>  d3.setBounds(250, 210,200,25);d4.setBo

106、unds(250, 240,200,25);</p><p>  bu1.setBounds(100,320,70,25);bu2.setBounds(190,320,70,25);</p><p>  bu3.setBounds(280,320,70,25);bu4.setBounds(370,320,70,25);</p><p>  add(l1);add(l

107、2);add(l3);add(l4);add(l5);</p><p>  add(d1);add(d2);add(d3);add(d4);</p><p>  add(bu1);add(bu2);add(bu3);add(bu4);</p><p>  bu1.addActionListener(this);bu2.addActionListener(this);

108、</p><p>  bu3.addActionListener(this);bu4.addActionListener(this);</p><p>  setBounds(100,100,600,400);</p><p>  setBackground(Color.white);</p><p>  validate();</p&

109、gt;<p>  addWindowListener(new WindowAdapter()</p><p>  {public void windowClosing(WindowEvent e)</p><p>  {setVisible(false);}</p><p><b>  });</b></p>

110、<p><b>  }</b></p><p>  public String work1()</p><p>  {String sg=d1.getText();System.out.print(" sdf");</p><p>  if(sg.startsWith("+")||sg.sta

111、rtsWith("0")||sg.startsWith("1"))</p><p>  { int index=sg.indexOf("+");</p><p>  String ss=sg.substring(index+1);</p><p>  ss1=ss.replaceFirst("

112、;0", "00");//獲得第一個數(shù)的補碼(+)</p><p><b>  }</b></p><p><b>  else{</b></p><p>  int index=sg.indexOf("-");</p><p>  String

113、ss=sg.substring(index+1);</p><p>  char a[]=ss.toCharArray();</p><p>  for(int i=2;i<a.length;i++)</p><p>  { char m='1',n='0';</p><p>  if(a[i]=

114、=m)a[i]=n;</p><p>  else a[i]=m;</p><p><b>  }</b></p><p>  if(a[a.length-1]=='0')a[a.length-1]='1';</p><p><b>  else{ </b><

115、/p><p>  for(int j=a.length-1;j>=2;j--)</p><p>  { if(a[j-1]=='0'){a[j-1]='1';a[j]='0';break;}</p><p>  else{a[j]='0';}</p><p><b

116、>  }</b></p><p><b>  } </b></p><p>  String se=new String(a);</p><p>  ss1=se.replaceFirst("0", "11");//獲得第一個數(shù)的補碼(-)</p><p>&

117、lt;b>  } </b></p><p>  return ss1;</p><p><b>  }</b></p><p>  public String work2()</p><p>  {String sa=d2.getText();</p><p>  if(s

118、a.startsWith("+")||sa.startsWith("0")||sa.startsWith("1"))</p><p>  { int index=sa.indexOf("+");</p><p>  String ss=sa.substring(index+1);</p>

119、<p>  ss2=ss.replaceFirst("0", "00");//獲得第二個數(shù)的補碼(+)</p><p><b>  }</b></p><p><b>  else{</b></p><p>  int index=sa.indexOf("-&q

120、uot;);</p><p>  String ss=sa.substring(index+1);</p><p>  char b[]=ss.toCharArray();</p><p>  for(int i=2;i<b.length;i++)</p><p>  { char m='1',n='0&

121、#39;;</p><p>  if(b[i]==m)b[i]=n;</p><p>  else b[i]=m;</p><p><b>  }</b></p><p>  if(b[b.length-1]=='0')b[b.length-1]='1';</p><p

122、><b>  else{ </b></p><p>  for(int j=b.length-1;j>=2;j--)</p><p>  { if(b[j-1]=='0'){b[j-1]='1';b[j]='0';break;}</p><p>  else{b[j]='

123、;0';}</p><p><b>  }</b></p><p><b>  }</b></p><p>  String sc=new String(b);</p><p>  ss2=sc.replaceFirst("0", "11");/

124、/獲得第二個數(shù)的補碼(-)</p><p><b>  }</b></p><p>  return ss2;</p><p><b>  }</b></p><p>  public String work3()</p><p><b>  {</b>

125、;</p><p>  String sa=d2.getText();</p><p>  if(sa.startsWith("-"))</p><p>  { int index=sa.indexOf("-");</p><p>  String ss=sa.substring(index+

126、1);</p><p>  ss2=ss.replaceFirst("0", "00");//獲得第二個數(shù)的補碼(+)</p><p><b>  }</b></p><p><b>  else{</b></p><p>  int index=sa.in

127、dexOf("+");</p><p>  String ss=sa.substring(index+1);</p><p>  char b[]=ss.toCharArray();</p><p>  for(int i=2;i<b.length;i++)</p><p>  { char m='1

128、',n='0';</p><p>  if(b[i]==m)b[i]=n;</p><p>  else b[i]=m;</p><p><b>  }</b></p><p>  if(b[b.length-1]=='0')b[b.length-1]='1';&l

129、t;/p><p><b>  else{ </b></p><p>  for(int j=b.length-1;j>=2;j--)</p><p>  { if(b[j-1]=='0'){b[j-1]='1';b[j]='0';break;}</p><p> 

130、 else{b[j]='0';}</p><p><b>  }</b></p><p><b>  }</b></p><p>  String sc=new String(b);</p><p>  ss2=sc.replaceFirst("0", &qu

131、ot;11");//獲得第二個數(shù)的補碼(-)</p><p><b>  }</b></p><p>  return ss2;</p><p><b>  }</b></p><p>  public String add1(char a1[],char a2[])</p>

132、;<p><b>  { </b></p><p>  char jg[]=new char[r];</p><p>  char cf='0';</p><p>  while(r>0)</p><p><b>  {</b></p><

133、;p>  if(a1[r-1]=='0'&&a2[r-1]=='0'&&cf=='0'){jg[r-1]='0';cf='0';}</p><p>  else if((a1[r-1]=='0'&&a2[r-1]=='0'&&cf==

134、'1')||</p><p>  (a1[r-1]=='0'&&a2[r-1]=='1'&&cf=='0')||</p><p>  (a1[r-1]=='1'&&a2[r-1]=='0'&&cf=='0')){jg

135、[r-1]='1';cf='0';}</p><p>  else if((a1[r-1]=='0'&&a2[r-1]=='1'&&cf=='1')||</p><p>  (a1[r-1]=='1'&&a2[r-1]=='0'&a

136、mp;&cf=='1')||</p><p>  (a1[r-1]=='1'&&a2[r-1]=='1'&&cf=='0')){ jg[r-1]='0';cf='1';}</p><p>  Else if(a1[r-1]=='1'&

137、;&a2[r-1]=='1'&&cf=='1')</p><p>  {jg[r-1]='1';cf='1';}</p><p>  else {jg[r-1]=a1[r-1];}</p><p><b>  r--;</b></p><

溫馨提示

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

評論

0/150

提交評論