目录

LISP - 运算符

运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 LISP允许对数据进行大量操作,由各种函数,宏和其他结构支持。

允许的数据操作可归类为 -

  • 算术运算
  • 比较操作
  • 逻辑运算
  • 按位操作

算术运算

下表显示了LISP支持的所有算术运算符。 假设变量A保持10,变量B保持20然后 -

Show Examples

操作者 描述
+ 添加两个操作数 (+ AB)将给出30
- 从第一个减去第二个操作数 ( - AB)将给-10
* 将两个操作数相乘 (* AB)将给200
/Divides numerator by de-numerator (/ BA)将给2
mod,rem 模数运算符和整数除法后的余数 (mod BA)将给出0
incf 增量运算符按指定的第二个参数增加整数值 (incf A 3)将给出13
decf Decrements运算符按指定的第二个参数减小整数值 (decf A 4)将给出9

比较操作

下表显示了LISP支持的所有关系运算符,用于比较数字。 然而,与其他语言中的关系运算符不同,LISP比较运算符可能需要两个以上的操作数,它们仅适用于数字。

假设变量A保持10,变量B保持20,则 -

Show Examples

操作者 描述
= 检查操作数的值是否全等,如果是,则条件变为真。 (= AB)不是真的。
/= 检查操作数的值是否全部不同,如果值不相等则条件变为真。 (/ = AB)是真的。
> 检查操作数的值是否单调递减。 (> AB)不是真的。
< 检查操作数的值是否单调递增。
>= 检查任何左操作数的值是否大于或等于下一个右操作数的值,如果是,则条件变为真。 (> = AB)不是真的。
<= 检查任何左操作数的值是否小于或等于其右操作数的值,如果是,则条件变为真。 (<= AB)是真的。
max 它比较两个或多个参数并返回最大值。 (最大AB)返回20
min 它比较两个或多个参数并返回最小值。 (最小AB)返回10

布尔值的逻辑运算

通用LISP提供三个逻辑运算符: and, or,not对布尔值进行操作。 假设A值为nil, B值为5,则 -

Show Examples

操作者 描述
and 它需要任意数量的参数。 参数从左到右进行评估。 如果所有参数都计算为非nil,则返回最后一个参数的值。 否则返回nil。 (和AB)将返回NIL。
or 它需要任意数量的参数。 从左到右计算参数,直到一个求值为非nil,在这种情况下返回参数值,否则返回nil (或AB)将返回5。
not 它接受一个参数,如果参数的计算结果为nil. ,则返回t nil. (不是A)将返回T.

数字的按位运算

按位运算符处理位并执行逐位运算。 按位和,或和xor运算的真值表如下 -

Show Examples

p q p和q p或q p xor q
00000
01011
11110
10011
Assume if A = 60; and B = 13; now in binary format they will be as follows:
A = 0011 1100
B = 0000 1101
-----------------
A and B = 0000 1100
A or B = 0011 1101
A xor B = 0011 0001
not A  = 1100 0011

LISP支持的Bitwise运算符如下表所示。 假设变量A保持60,变量B保持13,则 -

操作者 描述
logand 这将返回其参数的逐位逻辑AND。 如果没有给出参数,则结果为-1,这是此操作的标识。 (logand ab))将给出12
logior 这将返回其参数的逐位逻辑INCLUSIVE OR。 如果没有给出参数,则结果为零,这是此操作的标识。 (logior ab)将给出61
logxor 这将返回其参数的逐位逻辑EXCLUSIVE OR。 如果没有给出参数,则结果为零,这是此操作的标识。 (logxor ab)将给49
lognor 这将返回其参数的逐位NOT。 如果没有给出参数,则结果为-1,这是此操作的标识。 (lognor ab)将给出-62,
logeqv 这将返回其参数的逐位逻辑EQUIVALENCE(也称为异或)。 如果没有给出参数,则结果为-1,这是此操作的标识。 (logeqv ab)将给予-50
<上一篇.LISP - 常量
↑回到顶部↑
WIKI教程 @2018