邏輯運(yùn)算符用于布爾變量、常數(shù)和簡(jiǎn)單的、借助比較運(yùn)算符構(gòu)成的邏輯表達(dá)式的邏輯運(yùn)算。
運(yùn)算符 | 運(yùn)算數(shù)的數(shù)量 | 說明 |
NOT | 1 | 逆轉(zhuǎn) |
AND | 2 | 邏輯 “ 與 ” |
OR | 2 | 邏輯“ 或” |
EXOR | 2 | 異 “ 或 ” |
邏輯運(yùn)算的運(yùn)算數(shù)必須為 BOOL 類型。結(jié)果同樣始終為 BOOL 類型。下表顯示了可能存在的運(yùn)算的結(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 |
該表也適用于用位運(yùn)算符進(jìn)行的運(yùn)算。
示例 即使多個(gè)運(yùn)算也是允許的。
...
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
...
位運(yùn)算符
位運(yùn)算符依次運(yùn)算整數(shù),方法是依次邏輯運(yùn)算其單個(gè)位。運(yùn)算的結(jié)果等于邏輯運(yùn)算符的結(jié)果。
位值 1 相當(dāng)于 TRUE。
位值 0 相當(dāng)于 FALSE。
運(yùn)算符 | 運(yùn)算數(shù)的數(shù)量 | 說明 |
B_NOT | 1 | 位逆轉(zhuǎn) |
B_AND | 2 | 位的與運(yùn)算 |
B_OR | 2 | 位的或運(yùn)算 |
B_EXOR | 2 | 位的異或運(yùn)算 |
位運(yùn)算符可以應(yīng)用到 INT 和 CHAR 數(shù)據(jù)類型上。
INT 在 KRL 中有 32 位,必須注明正負(fù)號(hào)。CAHR 為 8 位,不必注明正負(fù)號(hào)。
對(duì)于帶整數(shù)值的 B_AND、B_OR 和 B_EXOR 的以下示例,得出正數(shù)(最高位= 0)。與無正負(fù)號(hào)的值一樣,可以直接將結(jié)果換算為十進(jìn)制。
通過“00 […]”表示運(yùn)算數(shù)前面的 28個(gè)零。
B_AND
示例:整數(shù)值 5 和 12 的運(yùn)算
B_OR
示例:整數(shù)值 5 和 12 的運(yùn)算
B_EXOR
示例:整數(shù)值 5和 12 的運(yùn)算
B_NOT
對(duì)于該整數(shù)示例,通過運(yùn)算得出一個(gè)負(fù)數(shù) (最高值位 = 1)。因此,無法用與無正負(fù)號(hào)數(shù)字相同的方式將結(jié)果換算為十進(jìn)制。
示例:帶整數(shù)值 10的 B_NOT
為了可以使用戶理解機(jī)器人控制系統(tǒng)換算的十進(jìn)制結(jié)果,則他必須了解二補(bǔ)數(shù)的解釋規(guī)則。這些規(guī)則不是本文的對(duì)象。
可以如下確定用注明正負(fù)號(hào)的運(yùn)算數(shù)進(jìn)行 B_NOT 運(yùn)算的十進(jìn)制結(jié)果:
1.??運(yùn)算數(shù)加 1的十進(jìn)制值
2.??更換正負(fù)號(hào)
其他示例
...
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可以有針對(duì)性地將比特序列的單個(gè)位設(shè)定為 1或 0。剩余的位保持不更改。
用 B_AND 可以將單個(gè)位設(shè)定為 0。
用 B_OR可以將單個(gè)位設(shè)定為 1。此外,可以檢查單個(gè)位是否為1或 0。示例:
存在一個(gè)寬度為 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ùn)算符的優(yōu)先級(jí)
優(yōu)先級(jí)給出運(yùn)算符在一個(gè)指令內(nèi)執(zhí)行運(yùn)算符的順序。
優(yōu)先級(jí) | 運(yùn)算符 |
1 | NOT; B_NOT |
2 | *; / |
3 | +; - |
4 | AND; B_AND |
5 | EXOR; B_EXOR |
6 | OR; B_OR |
7 | ==, <>; ?<, >, <=, >= |
原則上適用:
首先編輯括起來的表達(dá)式。
未括起來的表達(dá)式按照其優(yōu)先級(jí)進(jìn)行分析。
從左向右分析用相同優(yōu)先級(jí)的運(yùn)算符進(jìn)行的運(yùn)算。
數(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。
絕對(duì)值 ABS(X) 計(jì)算 X 的總和。
示例:
B = -3.4
A = 5*ABS(B)? ? ? ? ? ? ? ? ? ;A=17.0
平方根 SQRT(X) 計(jì)算 X 的平方根。
示例:
A = SQRT(16.0801)? ? ? ? ? ? ?;A=4.01
正弦 SIN(X) 計(jì)算角度 X 的正弦。
示例:
A = SIN(30)? ? ? ? ? ? ? ? ? ?;A=0,5
余弦 COS(X) 計(jì)算角度 X 的余弦。
示例:
B = 2*COS(45)? ? ? ? ? ? ? ? ?;B=1.41421356
正切 TAN(X) 計(jì)算角度 X 的正切。
示例:
以下總和的正切無窮:
? ±90°
? +90° + k*180°? (其中 k = ± 整數(shù))
如果嘗試一個(gè)這樣的值,這將導(dǎo)致錯(cuò)誤信息。
C = TAN(45)? ? ? ? ? ? ? ? ? ?;C=1.0
反余弦 ACOS(X) 是 COS(X) 的反函數(shù)。
示例:
A = COS(60)? ? ? ? ? ? ? ? ? ?;A=0.5
B = ACOS(A)? ? ? ? ? ? ? ? ? ?;B=60
反正弦
對(duì)于SIN(X)的反函數(shù)反余弦,沒有預(yù)定義函數(shù)。但是,基于公式SIN(X)????????????????? =COS(90°-X)可以很容易就計(jì)算出反正弦。
示例:
A=SIN(60)??????????????????? ;A=0.8660254 B=90-ACOS(A)???????????????? ;B=60 |
反正切?
角度正切的定義是直角三角形的鄰邊(X)除以對(duì)邊(Y)。如果兩個(gè)側(cè)邊的長(zhǎng)度已知,則可以用反正切計(jì)算鄰邊和斜邊之間的角度。
對(duì)于全圓,起決定性作用的是 X和 Y的正負(fù)號(hào)是什么。如果只考慮商,則用反正切只能計(jì)算 0°和 180°之間的角度。通常,這在袖珍計(jì)算器時(shí)也是如
此:正值的反正切得出一個(gè)0°和 90°之間的角度。負(fù)值的反正切得出一個(gè)90° 和 180° 之間的角度。
通過用正負(fù)號(hào)指定 Y 和 X 明確地確定了位于該角度中的四分之一圓。由此也可以計(jì)算四分之一圓 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
審核編輯:劉清
評(píng)論
查看更多