導航:首頁 > 軟體知識 > 微程序下模擬如何實現兩個數相減

微程序下模擬如何實現兩個數相減

發布時間:2023-01-15 04:56:37

Ⅰ 如何用Verilog實現一組數據的兩兩相減,最後輸出

你題目中沒說明白,men[0]-men[1]和men[1]-men[0]算不算是同一個減法?其實只要2個for循環就可以了,如果當作不是同一個減法就只好全部數都循環減一遍了。而且你要存儲,這個數據量比較多。

我寫個程序給你參考一下(我也不知道自己寫對沒,寫錯了請高手們指點一下)
算作同一個減法時:
reg[7:0]tmp[44:0];
integer x;
for(i=0;i<9;i=i+1)
for(j=i+1;j<10;j=j+1)
begin
tmp[x]=men[i]-men[j];
x=x+1;
end

不算作同一個減法:
reg[7:0]tmp[89:0];
integer x;
for(i=0;i<9;i=i+1)
for(j=0;j<9;j=j+1)
begin
if(i!=j)
begin
tmp[x]=men[i]-men[j];
x=x+1;
end
end

Ⅱ 用JAVA製作一個小程序,計算兩個數的加減乘除,用Applet實現

下面兩個可以么,是我做實驗答辯時用到的!

import java.awt.*;//AWT核心包
import java.awt.event.*;//提供事件類和監聽器
public class Counter extends Frame implements ActionListener
{
TextField t=new TextField("");//文本框
Panel p1=new Panel();//new一個panel,用於存放數字鍵和符號鍵。
Panel p2=new Panel();//new一個panel,用於存放開方、平方、和清除鍵。
Button[] b=new Button[10];//實例化Button對象
Button bAdd=new Button("加");
Button bSub=new Button("減");
Button bMul=new Button("乘以");
Button bPoint=new Button(".");
Button bDiv=new Button("除以");
Button bEqual=new Button("等於");
Button bSqrt=new Button("開方");
Button bPow=new Button("平方");
Button bNull=new Button("清除");

String str1=""; //str1和str2存放兩個輸入的數
String str2="";
String operator=null; //存放加減乘除以及開平方的符號
boolean first=true; //檢驗輸入的是否為第一個數
int countOper=0; //累計輸入符號的個數,連加連減等操作中會用到
double result=0.0; //暫存結果
double num1=0.0,num2=0.0; //兩個輸入的數做運算時轉化為double存放
boolean error=false; //檢驗除數是否為0

//構造方法
public Counter()
{
Frame s=new Frame("計算器");//創建Frame

for(int i=0;i<10;i++)//利用for循環將數字鍵添加進p1中
{
b[i]=new Button(String.valueOf(i));
p1.add(b[i]);
b[i].setActionCommand("number");
b[i].setForeground(new Color(150,20,20));
b[i].addActionListener(this);//調用addActionListener()方法注冊事件監聽器
}
p1.add(bPoint);
bPoint.setActionCommand("number");
p1.add(bAdd); //數字鍵,符號鍵放置在panel的p1中
p1.add(bSub);
p1.add(bMul);
p1.add(bDiv);
p1.add(bEqual);
p2.add(bSqrt);//開方鍵,平方鍵,清除鍵放置在panel的p2中
p2.add(bPow);
p2.add(bNull);
bAdd.setActionCommand("oper");
bSub.setActionCommand("oper");
bMul.setActionCommand("oper");
bDiv.setActionCommand("oper");

bAdd.setForeground(Color.red);//為組鍵設計顏色
bSub.setForeground(Color.red);
bMul.setForeground(Color.red);
bDiv.setForeground(Color.red);
bPoint.setForeground(Color.black);
bEqual.setForeground(Color.red);
bSqrt.setForeground(Color.blue);
bPow.setForeground(Color.blue);
bNull.setForeground(Color.blue);

bAdd.addActionListener(this);//調用addActionListener()方法注冊事件監聽器
bSub.addActionListener(this);
bMul.addActionListener(this);
bDiv.addActionListener(this);
bPoint.addActionListener(this);
bEqual.addActionListener(this);
bSqrt.addActionListener(this);
bPow.addActionListener(this);
bNull.addActionListener(this);

p1.setLayout(new GridLayout(4,4,5,5));//網格布局管理器,把容器根據行數和列數分成同樣大小的單元,
//每個單元可容納一個組件,並且此組件會填滿網格單元,不能控
//制其占據網格的大小。4、4為網格的行、列數。5、5為組建之間的
//間距
p2.setLayout(new FlowLayout());//用FlowLayout布局管理器將組建默認劇中排放,默認間隙為5個像素
add(t,"North"); //frame的north放置輸入框,panel放置在center和south
add(p1,"Center");//將p1添加到Center中
add(p2,"South");//將p2添加到South中
setLocation(400,200);//設計按鈕尺寸
setSize(200,200);//設計窗口尺寸
setBackground(new Color(20,200,10));//設置Frame的背景,默認為白色
setVisible(true);//設置Frame設置為可見

addWindowListener(new WindowAdapter(){ //關閉窗口功能
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}

//實現介面ActionListener
public void actionPerformed(ActionEvent e)
{
Button temp=(Button)e.getSource();

if(e.getActionCommand().equals("number"))
{
if(first)
{
str1=str1+temp.getLabel();
t.setText(str1);//將輸入的str1顯示在文本框中
}
else
{
str2=str2+temp.getLabel();
t.setText(str2);//將輸入的str2顯示在文本框中
}
}

else if(e.getActionCommand().equals("oper"))
{
if(str1=="") //如果還沒有輸入數就點擊運算符執行if
{
countOper=0;//若此,則將計數清零
first=true;
}
else
{
countOper++;//計算輸入符號的個數
if(countOper>1)//若輸入的符號個數多餘一個,則可以進行計算
{
getResult();
}
operator=temp.getLabel();//存放加減乘除以及開方、平方的符號
first=false;
}
}

else if(e.getActionCommand().equals("開方"))
{
double d=Math.sqrt(Double.parseDouble(str1));
str1=String.valueOf(d);//將計算出來的結果再次傳給str1,為連計算準備
t.setText(String.valueOf(d));//將計算出來的結果傳至文本框中
first=false;//置為false,即已輸入第一個數
}

else if(e.getActionCommand().equals("平方"))
{
double f=Math.pow(Double.parseDouble(str1),2);
str1=String.valueOf(f);
t.setText(String.valueOf(f));
first=false;
}

else if(e.getActionCommand().equals("清除"))
{
str1="";//清空
str2="";
t.setText("");//將文本框清空
countOper=0;//將按鍵計數器清零
first=true;
error=false;
}
else if(e.getActionCommand().equals("等於"))
{
if((str1=="")||(str2=="")) //兩個數沒有輸全就點擊等號,執行if
{
countOper=0;//將按鍵計數器清零
first=true;
}
else
{
getResult();
countOper=0;
}
}
}

//運算結果的方法
public void getResult()
{
num1=Double.parseDouble(str1);
num2=Double.parseDouble(str2);

if(operator.equals("加"))
{
result=num1+num2;
}

else if(operator.equals("減"))
{
result=num1-num2;
}

else if(operator.equals("乘以"))
{
result=num1*num2;
}

else if(operator.equals("除以"))
{
if(num2==0.0) //除數為0的處理方法
{
error=true;
}
else
{
result=num1/num2;
}
}

if(error)
{
t.setText("error");
}
else
{
t.setText(String.valueOf(result));
str1=String.valueOf(result); //運算後把結果放入str1中,str2清空,為連加連減等操作做准備
str2="";
}
}

//主方法
public static void main(String[] args)
{
new Counter();//創建一個對象"計算器"
}
}

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class CalculatorPanel extends JPanel
implements ActionListener
{ public CalculatorPanel()
{ setLayout(new BorderLayout());

display = new JTextField("0");
display.setEditable(false);
add(display, "North");

JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4));
String buttons = "789/456*123-0.=+";
for (int i = 0; i < buttons.length(); i++)
addButton(p, buttons.substring(i, i + 1));
add(p, "Center");
}

private void addButton(Container c, String s)
{ JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent evt)
{ String s = evt.getActionCommand();
if ('0' <= s.charAt(0) && s.charAt(0) <= '9'
|| s.equals("."))
{ if (start) display.setText(s);
else display.setText(display.getText() + s);
start = false;
}
else
{ if (start)
{ if (s.equals("-"))

else op = s;
}
else
{ calculate(Double.parseDouble(display.getText()));
op = s;
start = true;
}
}
}

public void calculate(double n)
{ if (op.equals("+")) arg += n;
else if (op.equals("-")) arg -= n;
else if (op.equals("*")) arg *= n;
else if (op.equals("/")) arg /= n;
else if (op.equals("=")) arg = n;
display.setText("" + arg);
}

private JTextField display;
private double arg = 0;
private String op = "=";
private boolean start = true;
}

public class CalculatorApplet extends JApplet
{ public void init()
{ Container contentPane = getContentPane();
contentPane.add(new CalculatorPanel());
}
}

Ⅲ matlab如何讓兩個加法器相減

##MATLAB之Simulink(四)
##兩位二進制數加法器

在上一節中,我們學習了全加器的原理並且進行了模擬,今天我們來做一個實例——兩位二進制數的加法器。

由於全加器有三個輸入,其中一個是由低位的進位輸入進來的,但是最低位只有兩個輸入,所以兩個最低位相加不能用加法器,那麼應該如何相加呢?這里給大家介紹另一種加法器——半加器。

半加器定義:
兩個1位二進制數相加,若只考慮了兩個加數本身,而沒有考慮由低位來的進位的運算稱為半加,而實現半加運算的邏輯電路稱為半加器。

也就是說,半加器僅適用於一位二進制數的相加,不需要考慮低位的進位。所以我們需要用到一個半加器和一個全加器,半加器用來計算兩個低位的結果,全加器用來計算兩個高位的結果,同時考慮低位的進位。
一般情況下,用A、B來表示兩個一位二進制加數,用S表示A、B的和,C表示A、B的進位。

先來模擬一下半加器:
列出真值表
在這里插入圖片描述

得出表達式:
在這里插入圖片描述
在這里插入圖片描述
根據表達式,很容易可以作出半加器的模型
(過程這里不再多說,不懂得朋友請看我的上一篇全加器的文章)
在這里插入圖片描述我們假設輸入的數分別為00、01、10、11,那麼輸入矩形波的設置應該是這樣:
在這里插入圖片描述我們用示波器連接兩個輸入和兩個輸入,觀察模擬結果:
在這里插入圖片描述
這里有四行波形,第一行為加數A,第二行為加數B,第三行為S,第四行為C。
不難看出,模擬結果與真值表相對應,半加器模擬成功!

接下來,我們直接將一個半加器和一個全加器合並在一起稍微修改,就可以得到一個兩位二進制數的加法器:

在這里插入圖片描述這里需要注意的是,半加器用來計算兩個低位,全加器用來計算兩個高位,全加器中的進位輸入由半加器的進位輸出連接。
在這幅圖中,A0,A1表示兩個低位,B0,B1表示兩個高位。
我們用三個示波器分別表示第一個加數、第二個加數和結果。

接下來我們看模擬結果:
第一個加數:
在這里插入圖片描述
第二個加數:
在這里插入圖片描述結果:
在這里插入圖片描述
注意:每幅圖都是低位在上,高位在下。

我們進行驗證,不難發現模擬結果正確。

這就是兩位二進制加法器的模擬過程,掌握這個方法後很容易設計出多位二進制加法器,沒錯,只要增加幾個全加器就可以了。

##以上就是本節的全部內容,後續內容會逐漸上傳,相關源碼也會統一上傳,也可以到公眾號私聊我要。

##不足之處請及時指出,相互學習
##不懂得小夥伴可以到我的公眾號"歌者X"私信我,看到後會回復的,歡迎交流學習!

Ⅳ verilog如何實現兩數相減

1、像你這樣也是可以的,但只能以大減小。

2、你的輸入輸出都為無符號數,結果是無所謂正負之分的,也無溢出。要想結果可正可負,你可以將寄存器都設置成有符號數的,但這樣一來就有溢出的問題了,但只要你在進行運算時注意結果不要超出范圍就行了。

閱讀全文

與微程序下模擬如何實現兩個數相減相關的資料

熱點內容
釘釘群如何刪除漫遊信息 瀏覽:944
如何通過技術學習賺錢 瀏覽:598
武夷山哪裡招聘信息 瀏覽:809
非洲賣什麼數碼產品好 瀏覽:662
濟南二手房多久可交易 瀏覽:537
投保信息第三者投保在哪裡查 瀏覽:247
達芬奇16資料庫為什麼建不了 瀏覽:565
正規的代理記賬如何找 瀏覽:791
農副產品如何發傳單 瀏覽:205
如何更新dnf助手信息 瀏覽:917
榮耀vivo如何轉移數據 瀏覽:980
小程序名字怎麼才能合格 瀏覽:102
市場營銷專業適合哪個事業單位 瀏覽:285
海安收藏品交易市場在哪裡 瀏覽:169
大通口碑好的代理記賬電話多少 瀏覽:690
美團外賣代理運營怎麼賺錢 瀏覽:362
分金亭如何代理 瀏覽:786
橋梁技術措施費包括哪些 瀏覽:587
cpu中的少量數據是什麼 瀏覽:966
微博和小程序有什麼區別 瀏覽:934