當前位置:首頁 » 編程軟體 » 編程真值表

編程真值表

發布時間: 2022-06-20 07:58:00

① 怎麼將真值表轉換成邏輯函數表達式

編程的沒幾個會電子技術的,你最好去電子方面的網站上搜下!在這里你很難得到滿意的答案

② 離散數學編程:要求編寫一段代碼,輸入任意一個復合命題公式,判斷該命題的真值並輸出真值表

你學號多少?

③ 真值表可以用來表示數字量的邏輯運算關系嗎

與-或式;與非-與非式;與或非式;或非-或非式;
邏輯函數的幾種表示方法
◆ 布爾代數法
按一定邏輯規律進行運算的代數.與普通代數不同,布爾代數中的變數是二元值的邏輯變數.
◆ 真值表法
採用一種表格來表示邏輯函數的運算關系,其中輸入部分列出輸入邏輯變數的所有可能組合,輸出部分給出相應的輸出邏輯變數值.
◆ 邏輯圖法
採用規定的圖形符號,來構成邏輯函數運算關系的網路圖形.
◆ 卡諾圖法
卡諾圖是一種幾何圖形,可以用來表示和簡化邏輯函數表達式.
◆ 波形圖法
一種表示輸入輸出變數動態變化的圖形,反映了函數值隨時間變化的規律.
◆ 點陣圖法
是早期可編程邏輯器件中直觀描述邏輯函數的一種方法.◆ 硬體設計語言法法

④ 用C++編程構造(P∧(P→Q))→Q的真值表

(P∧(P->Q))->Q
p->Q等價於(┐P)∨Q寫成C/C++語言就是(!P)||Q
P∧(P->Q)等價於P∧((┐p)∨Q)寫成C/C++就是P&&((!P)||Q))
(P∧(P->Q))->Q等價於(┐(P∧((┐p)∨Q)))∨Q寫成C/C++語言就是(!(P&&((!P)||Q))))||Q
Programe Code:
#include <iostream>
using namespace std;
int main()
{
int Q,P;
cout<<"P Q (P∧(P->Q))->Q\n";
for(P=0;P<=1;P++)
for(Q=0;Q<=1;Q++)
cout<<P<<" "<<Q<<" "
<<((!(P&&((!P)||Q)))||Q)<<endl;
}
//運行結果
P Q (P∧(P->Q))->Q
0 0 1
0 1 1
1 0 1
1 1 1

其實你可以將表達式化簡:
┐(P∧((┐p)∨Q))∨Q
<=> ┐((P∧┐p)∨(P∧Q)))∨Q
<=> ┐(0∨(P∨Q)))∨Q
<=> 1 ∨((┐(P∨Q))∨Q)
<=> 1

⑤ 用C語言編程:輸入命題公式的合式公式,求出公式的真值表,並輸出該公式的主合取範式和主析取範式

A-Z + is OR * is AND _ is → # is⊕(圓圈裡加個+) @ is ⊙

$ is ↑ 命題的"與非" 運算( "與非門" )

% is ↓ 命題的"或非"運算( "或非門" )

Input the source formula:

A*!S+R

NORMALc: (!A*!B*!R)+(A*!B*!R)+(!A*B*!R)+(A*B*!R)+(!A*!B*R)+(!A*B*R)+(A*B*R)

NORMALd (!A+B+!R)

Error!

Input the source formula:

A#B

Here!

4countTerms

NORMALc: (A*!B)+(!A*B)

NORMALd (A+B)*(!A+!B)

Error!

Input the source formula:

stack<char> stk;

bool isVar(char ch)const;

void addMin(int minterm);

void addMax(int maxterm);

bool compute(int minterm);

void getInversePoland();

int countTerms(int n);

void assign(int minterm);

stack<bool> boolStk;

public:

formulaBase();

formulaBase(const formulaBase& rhs);

~formulaBase();

void getSource();

cout<<"Invalid input !"

"Operate again:"<<endl;

cin>>sourceFormula;*/

}

void formulaBase::getInversePoland()

{

char temp,temp1;

for(int i=0;sourceFormula[i]!='';i++)

stk.pop();

}

else break;

}

stk.push(temp);

break;

case '*':

while (!stk.empty())

//從鍵盤上任意輸入一個主析取範式,輸出與之等值的主合取範式。┐∧∨

# include <iostream>

# include <cmath>

# include <windows.h>

using namespace std ;

(5)編程真值表擴展閱讀:

(1)命題變項是命題公式。

(2)如果A是命題公式,則¬A是命題公式。

(3)如果A和B是命題公式,那麼(A∧B)、(A∨B)、(A→B)和(A↔B)都是命題公式。

(4)當且僅當有限次地應用(1),(2),(3)所得到的包含命題變項,聯結詞和圓括弧的符號串是命題公式。

命題公式的定義是一個遞歸定義形式。命題公式本身不是命題,沒有真值,只有對其命題變項進行賦值後,它才有真值。

5個聯結詞運算兒有不同的優先順序。當它們同時出現在一個命題公式里時,聯結間運算的優先次序為、∧、∨、→、,如果有括弧,則括弧內的運算優先進行。

⑥ 如何用C或C+編程序實現:從鍵盤任意輸入一個命題公式,用真值表法判斷其類型

#include<iostream>
#include<string>
using namespace std;
string calcValue(string value1);
string calcValueNop(string value1);
string caclAnd(string x,string y);
string caclOr(string x,string y);
string caclNot(string x);
int main()
{ string in,varList="";//="!a+b^c"
cout<<"請輸入命題公式: 注意: !,^,+,(,),字母為合法,不要有數字、空格,括弧也要匹配!"<<endl;
cin>>in;
cout<<"輸入命題公式"<<in<<"的真值表如下:"<<endl;
int length=in.length();
for(int i=0;i<length;i++)
{
char code=in[i];
if( ((code>=97)&&(code<123)||((code>=65))&&(code<81))&&varList.find(code,0)==-1 )
varList+=code;
}
int n=varList.length();
for(i=0;i<n;i++)
cout<<varList[i]<<"\t";
cout<<in<<"\t\t"<<"值"<<endl;

int m=1;
int flag;
char *trow=new char[n];
for(i=0;i<n;i++){m*=2;trow[i]='0';}
for(i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<trow[j]<<"\t";
string value1=in;
for(j=0;j<n;j++)
{
char x=varList[j];
for(int k=0;k<length;k++)
if(value1[k]==x)
value1[k]=trow[j];
}
cout<<value1<<"\t\t"<<calcValue(value1)<<endl;
flag=1;
for(j=n-1;j>-1;j--)
{ int temp;
temp=int(trow[j])-48;
flag=flag+temp;
if(flag==2)
{
trow[j]='0';
flag=1;
}
else
{
trow[j]='1';
flag=0;
break;
}
}
}

delete trow;
return 0;
}

string calcValue(string value1)
{
int nlp=value1.find('(',0);
int nrp=value1.length();
string x="",v="";
int i=nlp+1;
while(nlp>=0)
{
x=value1.substr(i,1);
if(x=="(")
{
nlp=i;
i++;
}
else
{
if(x==")")
{
nrp=i;
v=calcValueNop(value1.substr(nlp+1,nrp-nlp-1));
value1=(nlp>0?value1.substr(0,nlp):"")+v+((nrp+1)<=value1.length()?value1.substr(nrp+1):"");
nlp=value1.find('(',0);
i=nlp+1;
}
else
{
i=i+1;
}
}
if(i>=value1.length())
{
nlp=value1.find('(',0);
i=nlp+1;
}
}
return calcValueNop(value1);
}

string calcValueNop(string value1)
{
int nnot=value1.find('!',0);
while(nnot>=0)
{
value1=(nnot>0?value1.substr(0,nnot):"")+caclNot(value1.substr(nnot+1,1))+((nnot+2)<=value1.length()?value1.substr(nnot+2):"");
nnot=value1.find('!',0);
}
int nand=value1.find('^',0);
while (nand>0)
{
value1=((nand-1)>0?value1.substr(0,nand-1):"")+caclAnd(value1.substr(nand-1,1),value1.substr(nand+1,1))+((nand+2)<=value1.length()?value1.substr(nand+2):"");
nand=value1.find('^',0);
}
int nOr=value1.find('+',0);
while (nOr>0)
{
value1=((nOr-1)>0?value1.substr(0,nOr-1):"")+
caclOr(value1.substr(nOr-1,1),value1.substr(nOr+1,1))+
((nOr+2)<=value1.length()?value1.substr(nOr+2):"");
nOr=value1.find('+',0);
}
return value1;
}

string caclAnd(string x,string y)
{
if ((x=="1") && (y=="1"))
{
return "1";
}
else
{
return "0";
}

}

string caclOr(string x,string y)
{
if ((x=="0") && (y=="0"))
{
return "0";
}
else
{
return "1";
}
}
string caclNot(string x)
{ if (x=="1")
{
return "0";
}
else
{
return "1";
}
}

⑦ 什麼是異或操作寫出一或的運算真值表並且是其物理意義

操作寫出以後的預算指標,這個就是說在進行編程的過程當中,物理意義的一個調試。
它對於我們在真正的判斷具體范圍的時候值域有關。

⑧ 編程中有那些邏輯運算指令

1.算術運算符
Java的算術運算符分為一元運算符和二元運算符。一元運算符只有一個操作數;二元運算符有兩個操作數,運算符位於兩個操作數之間。算術運算符的操作數必須是數值類型。

(1)一元運算符:
一元運算符有:正(+)、負(-)、加1(++)和減1(--)4個。
加1、減1運算符只允許用於數值類型的變數,不允許用於表達式中。加1、減1運算符既可放在變數之前(如++i),也可放在變數之後(如i++),兩者的差別是:如果放在變數之前(如++i),則變數值先加1或減1,然後進行其他相應的操作(主要是賦值操作);如果放在變數之後(如i++),則先進行其他相應的操作,然後再進行變數值加1或減1。
例如:
int i=6,j,k,m,n;
j = +i; //取原值,即j=6
k = -i; //取負值,即k=-6
m = i++; //先m=i,再i=i+1,即m=6,i=7
m = ++i; //先i=i+1,再m=i,即i=7,m=7
n = j--; //先n=j,再j=j-1,即n=6,j=5
n = --j; //先j=j-1,再n=j,即j=5,n=5
在書寫時還要注意的是:一元運算符與其前後的操作數之間不允許有空格,否則編譯時會出錯。

(2)二元運算符
二元運算符有:加(+)、減(-)、乘(*)、除(/)、取余(%)。其中+、-、*、/完成加、減、乘、除四則運算,%是求兩個操作數相除後的余數。

%求余操作舉例:
a % b = a - (a / b) * b
取余運算符既可用於兩個操作數都是整數的情況,也可用於兩個操作數都是浮點數(或一個操作數是浮點數)的情況。當兩個操作數都是浮點數時,例如7.6 % 2.9時,計算結果為:7.6 - 2 * 2.9 = 1.8。
當兩個操作數都是int類型數時,a%b的計算公式為:
a % b = a - (int)(a / b) * b
當兩個操作數都是long類型(或其他整數類型)數時,a%b的計算公式可以類推。

當參加二元運算的兩個操作數的數據類型不同時,所得結果的數據類型與精度較高(或位數更長)的那種數據類型一致。

例如:
7 / 3 //整除,運算結果為2
7.0 / 3 //除法,運算結果為2.33333,即結果與精度較高的類型一致
7 % 3 //取余,運算結果為1
7.0 % 3 //取余,運算結果為1.0
-7 % 3 //取余,運算結果為-1,即運算結果的符號與左操作數相同
7 % -3 //取余,運算結果為1,即運算結果的符號與左操作數相同

2.關系運算符
關系運算符用於比較兩個數值之間的大小,其運算結果為一個邏輯類型的數值。關系運算符有六個:等於(==)、不等於(!=)、大於(>)、大於等於(>=)、小於(<)、小於等於(<=)。

例如:
9 <= 8 //運算結果為false
9.9 >= 8.8 //運算結果為true
'A' < 'a' //運算結果為true,因字元'A'的Unicode編碼值小於字元'a'的
要說明的是,對於大於等於(或小於等於)關系運算符來說,只有大於和等於兩種關系運算都不成立時其結果值才為false,只要有一種(大於或等於)關系運算成立其結果值即為true。例如,對於9 <= 8,9既不小於8也不等於8,所以9 <= 8 的運算結果為false。對於9 >= 9,因9等於9,所以9 >= 9的運算結果為true。

3.邏輯運算符
邏輯運算符要求操作數的數據類型為邏輯型,其運算結果也是邏輯型值。邏輯運算符有:邏輯與(&&)、邏輯或(||)、邏輯非(!)、邏輯異或(^)、邏輯與(&)、邏輯或(|)。
真值表是表示邏輯運算功能的一種直觀方法,其具體方法是把邏輯運算的所有可能值用表格形式全部羅列出來。Java語言邏輯運算符的真值表如下:
邏輯運算符的真值表
A B A&&B A||B !A A^B A&B A|B
false false false false true false false false
true false false true false true false true
false true false true true true false true
true true true true false false true true

前兩列是參與邏輯運算的兩個邏輯變數,共有4種可能,所以表2.5共有4行。後6列分別是6個邏輯運算符在邏輯變數A和邏輯變數B取不同數值時的運算結果值。
要說明的是,兩種邏輯與(&&和&)的運算規則基本相同,兩種邏輯或(||和|)的運算規則也基本相同。其區別是:&和|運算是把邏輯表達式全部計算完,而&&和||運算具有短路計算功能。所謂短路計算,是指系統從左至右進行邏輯表達式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。對於&&運算來說,只要運算符左端的值為false,則因無論運算符右端的值為true或為false,其最終結果都為false。所以,系統一旦判斷出&&運算符左端的值為false,則系統將終止其後的計算過程;對於 || 運算來說,只要運算符左端的值為true,則因無論運算符右端的值為true或為false,其最終結果都為true。所以,系統一旦判斷出|| 運算符左端的值為true,則系統將終止其後的計算過程。

例如,有如下邏輯表達式:
(i>=1) && (i<=100)
此時,若i等於0,則系統判斷出i>=1的計算結果為false後,系統馬上得出該邏輯表達式的最終計算結果為false,因此,系統不繼續判斷i<=100的值。短路計算功能可以提高程序的運行速度。
作者建議讀者:在程序設計時使用&&和||運算符,不使用&和|運算符。

用邏輯與(&&)、邏輯或(||)和邏輯非(!)可以組合出各種可能的邏輯表達式。邏輯表達式主要用在 if、while等語句的條件組合上。
例如:
int i = 1;
while(i>=1) && (i<=100) i++; //循環過程
上述程序段的循環過程將i++語句循環執行100次。

4.位運算符
位運算是以二進制位為單位進行的運算,其操作數和運算結果都是整型值。
位運算符共有7個,分別是:位與(&)、位或(|)、位非(~)、位異或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位運算的位與(&)、位或(|)、位非(~)、位異或(^)與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的操作數和運算結果都是二進制整數,而邏輯運算相應操作的操作數和運算結果都是邏輯值。

位運算示例
運算符 名稱 示例 說明
& 位與 x&y 把x和y按位求與
| 位或 x|y 把x和y按位求或
~ 位非 ~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
>> 右移 x>>y 把x的各位右移y位
<< 左移 x<<y 把x的各位左移y位
>>> 右移 x>>>y 把x的各位右移y位,左邊填0

舉例說明:
(1)有如下程序段:
int x = 64; //x等於二進制數的01000000
int y = 70; //y等於二進制數的01000110
int z = x&y //z等於二進制數的01000000
即運算結果為z等於二進制數01000000。位或、位非、位異或的運算方法類同。
(2)右移是將一個二進制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數為正時),或者補1(當該數為負時)。這是因為整數在機器內部採用補碼表示法,正數的符號位為0,負數的符號位為1。例如,對於如下程序段:
int x = 70; //x等於二進制數的01000110
int y = 2;
int z = x>>y //z等於二進制數的00010001
即運算結果為z等於二進制數00010001,即z等於十進制數17。
對於如下程序段:
int x = -70; //x等於二進制數的11000110
int y = 2;
int z = x>>y //z等於二進制數的11101110
即運算結果為z等於二進制數11101110,即z等於十進制數-18。要透徹理解右移和左移操作,讀者需要掌握整數機器數的補碼表示法。
(3)0填充的右移(>>>)是不論被移動數是正數還是負數,左邊移進的部分一律補0。

5.其他運算符

(1)賦值運算符與其他運算符的簡捷使用方式
賦值運算符可以與二元算術運算符、邏輯運算符和位運算符組合成簡捷運算符,從而可以簡化一些常用表達式的書寫。
賦值運算符與其他運算符的簡捷使用方式
運算符 用法 等價於 說明
+= s+=i s=s+i s,i是數值型
-= s-=i s=s-i s,i是數值型
*= s*=i s=s*i s,i是數值型
/= s/=i s=s/i s,i是數值型
%= s%=i s=s%i s,i是數值型
&= a&=b a=a&b a,b是邏輯型或整型
|= a|=b a=a|b a,b是邏輯型或整型
^= A^=b a=a^b a,b是邏輯型或整型
<<= s<<=i s=s<<i s,i是整型
>>= s>>=i s=s>>i s,i是整型
>>>= s>>>=i s=s>>>i s,i是整型

(2)方括弧[]和圓括弧()運算符
方括弧[]是數組運算符,方括弧[]中的數值是數組的下標,整個表達式就代表數組中該下標所在位置的元素值。
圓括弧()運算符用於改變表達式中運算符的優先順序。

(3)字元串加(+)運算符
當操作數是字元串時,加(+)運算符用來合並兩個字元串;當加(+)運算符的一邊是字元串,另一邊是數值時,機器將自動將數值轉換為字元串,這種情況在輸出語句中很常見。如對於如下程序段:
int max = 100;
System.out.println("max = "+max);
計算機屏幕的輸出結果為:max = 100,即此時是把變數max中的整數值100轉換成字元串100輸出的。

(4)條件運算符(?:)
條件運算符(?:)的語法形式為:
<表達式1> ?<表達式2> : <表達式3>
條件運算符的運算方法是:先計算<表達式1>的值,當<表達式1>的值為true時,則將<表達式2>的值作為整個表達式的值;當<表達式1>的值為false時,則將<表達式3>的值作為整個表達式的值。如:
int a=1,b=2,max;
max = a>b?a:b; //max等於2

(5)強制類型轉換符
強制類型轉換符能將一個表達式的類型強制轉換為某一指定數據類型,其語法形式為:
(<類型>)<表達式>

(6)對象運算符instanceof
對象運算符instanceof用來測試一個指定對象是否是指定類(或它的子類)的實例,若是則返回true,否則返回false。

(7)點運算符
點運算符「.」的功能有兩個:一是引用類中成員,二是指示包的層次等級。

6.運算符的優先順序
以下按優先順序從高到低的次序列出Java語言中的所有運算符,表中結合性一列中的「左?右」表示其運算次序為從左向右,「右?左」表示其運算次序為從右向左。

優先順序 運算符 結合性
1 . [] () ; ,
2 ++ ―― += ! ~ +(一元) -(一元) 右?左
3 * / % 左?右
4 +(二元) -(二元) 左?右
5 << >> >>> 左?右
6 < > <= >= instanceof 左?右
7 = = != 左?右
8 & 左?右
9 ^ 左?右
10 | 左?右
11 && 左?右
12 || 左?右
13 ?: 右?左
14 = *= /= %= += -= <<= >>= >>>= &= ^= |= 右?左

⑨ 計算機語言編程類問題 x=-20 y=+64 x+y= x-y=用真值表,表示,要過程謝了

#include"stdio.h"

main()
{
int x=-20,y=64;
printf("%d,%d",x+y,x-y)
}

⑩ plc編程的與或非是什麼意思

PLC編程,其與或非跟其他語言是一樣的,只是表示方法不一樣而已,當然,PLC體現的是實際的控制電路,所以可以這么來理解:

與:就是兩個觸點的串聯;

或:就是兩個觸點的並聯;

非:就是取反。

PLC

可編程邏輯控制器,它採用一類可編程的存儲器,用於其內部存儲程序,執行邏輯運算、順序控制、定時、計數與算術操作等面向用戶的指令,並通過數字或模擬式輸入/輸出控制各種類型的機械或生產過程。

(10)編程真值表擴展閱讀:

或非是一種邏輯演算法,常在計算機中以「或非門」的形式存在。「或非」和析取的否定是等價的。

真值表表示為:NOR

輸入輸出

A B Y

1 1 0

1 0 0

1 1 0

0 0 1

即作一次或者多次「或」運算後再做一次「非」運算。有1出0,全0出1。

與非是一種邏輯演算法,常在計算機中以「與非門」的形式存在。表示為:NAND。「與非」和合取得否定是等價的。

輸入輸出

1 1 0

1 0 1

0 1 1

0 0 1

即先作一次「與」運算後,再做一次「非」運算。

進行與非運算的電路稱為與非門,其輸出結果為:有0出1,全1出0。

熱點內容
電腦我的世界伺服器游戲幣 發布:2025-05-16 05:27:25 瀏覽:487
索尼手機為什麼不能用安卓10 發布:2025-05-16 05:18:46 瀏覽:784
蔚來es6選擇哪些配置實用 發布:2025-05-16 05:18:05 瀏覽:130
小米如何掃碼wifi密碼 發布:2025-05-16 05:13:38 瀏覽:807
樓層密碼是什麼意思 發布:2025-05-16 05:13:37 瀏覽:13
創建文件夾失敗 發布:2025-05-16 05:12:59 瀏覽:396
電腦上如何查詢自己的配置 發布:2025-05-16 05:06:36 瀏覽:105
sql中去重 發布:2025-05-16 04:55:06 瀏覽:893
dwr上傳圖片 發布:2025-05-16 04:49:46 瀏覽:122
base64加密的圖片 發布:2025-05-16 04:35:46 瀏覽:356