邏輯運算符用于布爾變量、常數(shù)和簡單的、借助比較運算符構(gòu)成的邏輯表達式的邏輯運算。
| 運算符 | 運算數(shù)的數(shù)量 | 說明 |
| NOT | 1 | 逆轉(zhuǎn) |
| AND | 2 | 邏輯 “ 與 ” |
| OR | 2 | 邏輯“ 或” |
| EXOR | 2 | 異 “ 或 ” |
邏輯運算的運算數(shù)必須為 BOOL 類型。結(jié)果同樣始終為 BOOL 類型。下表顯示了可能存在的運算的結(jié)果:
| 操作 | NOT A | A AND B | A OR B | A EXOR B | |
| A = TRUE | B = TRUE | FALSE | TRUE | TRUE | FALSE |
| A = TRUE | B = FALSE | FALSE | FALSE | TRUE | TRUE |
| A = FALSE | B = TRUE | TRUE | FALSE | TRUE | TRUE |
| A = FALSE | B = FALSE | TRUE | FALSE | FALSE | FALSE |
該表也適用于用位運算符進行的運算。
示例 即使多個運算也是允許的。
...
DECL BOOL A,B,C
...
A=TRUE ;A=TRUE
B =NOTA ;B=FALSE
C = (A AND B)OR NOT (B EXORNOTA) ;C=TRUEA = NOTNOT C??????????????????????????????????????? ;A=TRUE
...
位運算符
位運算符依次運算整數(shù),方法是依次邏輯運算其單個位。運算的結(jié)果等于邏輯運算符的結(jié)果。
位值 1 相當(dāng)于 TRUE。
位值 0 相當(dāng)于 FALSE。
| 運算符 | 運算數(shù)的數(shù)量 | 說明 |
| B_NOT | 1 | 位逆轉(zhuǎn) |
| B_AND | 2 | 位的與運算 |
| B_OR | 2 | 位的或運算 |
| B_EXOR | 2 | 位的異或運算 |
位運算符可以應(yīng)用到 INT 和 CHAR 數(shù)據(jù)類型上。
INT 在 KRL 中有 32 位,必須注明正負號。CAHR 為 8 位,不必注明正負號。
對于帶整數(shù)值的 B_AND、B_OR 和 B_EXOR 的以下示例,得出正數(shù)(最高位= 0)。與無正負號的值一樣,可以直接將結(jié)果換算為十進制。
通過“00 […]”表示運算數(shù)前面的 28個零。
B_AND

示例:整數(shù)值 5 和 12 的運算
B_OR

示例:整數(shù)值 5 和 12 的運算
B_EXOR

示例:整數(shù)值 5和 12 的運算
B_NOT
對于該整數(shù)示例,通過運算得出一個負數(shù) (最高值位 = 1)。因此,無法用與無正負號數(shù)字相同的方式將結(jié)果換算為十進制。

示例:帶整數(shù)值 10的 B_NOT
為了可以使用戶理解機器人控制系統(tǒng)換算的十進制結(jié)果,則他必須了解二補數(shù)的解釋規(guī)則。這些規(guī)則不是本文的對象。
可以如下確定用注明正負號的運算數(shù)進行 B_NOT 運算的十進制結(jié)果:
1.??運算數(shù)加 1的十進制值
2.??更換正負號
其他示例
...
DECL INT A
...
A = 10B_AND9 ;A=8
A = 10B_OR 9 ;A=11
A = 10B_EXOR9 ;A=3
A =B_NOT 197 ;A=-198
A =B_NOT'HC5' ;A=-198
A =B_NOT'B11000101' ;A=-198
A =B_NOT "E" ;A=154
...
設(shè)定位并檢查位:
用 B_AND和 B_OR可以有針對性地將比特序列的單個位設(shè)定為 1或 0。剩余的位保持不更改。
用 B_AND 可以將單個位設(shè)定為 0。
用 B_OR可以將單個位設(shè)定為 1。此外,可以檢查單個位是否為1或 0。示例:
存在一個寬度為 8 位的數(shù)字輸出端。該輸出端可通過 INT 變量 DIG 響應(yīng)。將位 1、2 和 6 設(shè)定為 0:
| DIG = DIG B_AND 'B10111001' |
將位 0、2、3 和 7 設(shè)定為 1:
| DIG = DIG B_OR 'B10001101' |
檢查是否已將位 0 和 7 設(shè)定為 1。如是,則 my_result 變?yōu)?TRUE:
|
DECL ?BOOL my_result ... my_result ?= DIG B_AND ('B10000001') > 0 |
運算符的優(yōu)先級
優(yōu)先級給出運算符在一個指令內(nèi)執(zhí)行運算符的順序。
| 優(yōu)先級 | 運算符 |
| 1 | NOT; B_NOT |
| 2 | *; / |
| 3 | +; - |
| 4 | AND; B_AND |
| 5 | EXOR; B_EXOR |
| 6 | OR; B_OR |
| 7 | ==, <>; ?<, >, <=, >= |
原則上適用:
首先編輯括起來的表達式。
未括起來的表達式按照其優(yōu)先級進行分析。
從左向右分析用相同優(yōu)先級的運算符進行的運算。
數(shù)學(xué)標(biāo)準(zhǔn)功能
| 功能 | 數(shù)值范圍自變量 | 數(shù)值范圍結(jié)果 |
|
ABS(X) 總和 |
REAL_MIN…REAL_MAX | 0? …REAL_MAX |
|
SQRT(X) 平方根 |
0? …REAL_MAX | 0? …REAL_MAX |
|
SIN(X) 正弦 |
REAL_MIN…REAL_MAX | -1? …+1 |
|
COS(X) 余弦 |
REAL_MIN…REAL_MAX | -1? …+1 |
|
TAN(X) 正切 |
REAL_MIN…REAL_MAX | REAL_MIN…REAL_MAX |
|
ACOS(X) 反余弦 |
-1? …? +1 | 0? …+180 |
|
ATAN2(Y,X) 反正切 |
REAL_MIN…REAL_MAX | -180? …+180 |
所有函數(shù)的數(shù)據(jù)類型:REAL。所有自變量的數(shù)據(jù)類型:REAL。
絕對值 ABS(X) 計算 X 的總和。
示例:
B = -3.4
A = 5*ABS(B)? ? ? ? ? ? ? ? ? ;A=17.0
平方根 SQRT(X) 計算 X 的平方根。
示例:
A = SQRT(16.0801)? ? ? ? ? ? ?;A=4.01
正弦 SIN(X) 計算角度 X 的正弦。
示例:
A = SIN(30)? ? ? ? ? ? ? ? ? ?;A=0,5
余弦 COS(X) 計算角度 X 的余弦。
示例:
B = 2*COS(45)? ? ? ? ? ? ? ? ?;B=1.41421356
正切 TAN(X) 計算角度 X 的正切。
示例:
以下總和的正切無窮:
? ±90°
? +90° + k*180°? (其中 k = ± 整數(shù))
如果嘗試一個這樣的值,這將導(dǎo)致錯誤信息。
C = TAN(45)? ? ? ? ? ? ? ? ? ?;C=1.0
反余弦 ACOS(X) 是 COS(X) 的反函數(shù)。
示例:
A = COS(60)? ? ? ? ? ? ? ? ? ?;A=0.5
B = ACOS(A)? ? ? ? ? ? ? ? ? ?;B=60
反正弦
對于SIN(X)的反函數(shù)反余弦,沒有預(yù)定義函數(shù)。但是,基于公式SIN(X)????????????????? =COS(90°-X)可以很容易就計算出反正弦。
示例:
|
A=SIN(60)??????????????????? ;A=0.8660254 B=90-ACOS(A)???????????????? ;B=60 |
反正切?
角度正切的定義是直角三角形的鄰邊(X)除以對邊(Y)。如果兩個側(cè)邊的長度已知,則可以用反正切計算鄰邊和斜邊之間的角度。
對于全圓,起決定性作用的是 X和 Y的正負號是什么。如果只考慮商,則用反正切只能計算 0°和 180°之間的角度。通常,這在袖珍計算器時也是如
此:正值的反正切得出一個0°和 90°之間的角度。負值的反正切得出一個90° 和 180° 之間的角度。
通過用正負號指定 Y 和 X 明確地確定了位于該角度中的四分之一圓。由此也可以計算四分之一圓 III 和 IV 中的角度。
示例:
|
A=ATAN2(0.5,0.5)????????????? ;A=+45 B=ATAN2(0.5,-0.5)???????????? ;B=+135 C=ATAN2(-0.5,-0.5)??????????? ;C=-135 D=ATAN2(-0.5,0.5)???????????? ;D=-45 |

在函數(shù) ATAN(Y,X)中使用X 和 Y
審核編輯:劉清
電子發(fā)燒友App































評論