LISP - 操作符

  • 简述

    运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。LISP 允许对数据进行大量操作,由各种函数、宏和其他结构支持。
    允许对数据进行的操作可以归类为 -
    • 算术运算
    • 比较操作
    • 逻辑运算
    • 按位运算
  • 算术运算

    下表显示了 LISP 支持的所有算术运算符。假设变量A持有 10 和变量B然后持有 20 -
    操作符 描述 例子
    + 添加两个操作数 (+AB) 会给出 30
    - 从第一个操作数中减去第二个操作数 (- A B) will give -10
    * 将两个操作数相乘 (* A B) will give 200
    / 分子除以反分子 (/ B A) will give 2
    mod,rem 模运算符和整数除法后的余数 (mod B A )will give 0
    incf 增量运算符按指定的第二个参数增加整数值 (incf A 3) will give 13
    decf 减量运算符将整数值减去指定的第二个参数 (decf A 4) will give 9
  • 比较操作

    下表显示了 LISP 支持的所有比较数字的关系运算符。然而,与其他语言中的关系运算符不同,LISP 比较运算符可能需要两个以上的操作数,并且它们仅适用于数字。
    假设变量A持有 10 和变量B持有 20,然后 -
    操作符 描述 例子
    = 检查操作数的值是否全部相等,如果是则条件为真。 (= A B) is not true.
    /= 检查操作数的值是否都不同,如果值不相等则条件为真。 (/= A B) is true.
    > 检查操作数的值是否单调递减。 (> A B) is not true.
    < 检查操作数的值是否单调递增。 (< A B) is true.
    >= 检查任何左操作数的值是否大于或等于下一个右操作数的值,如果是,则条件为真。 (>= A B) is not true.
    <= 检查任何左操作数的值是否小于或等于其右操作数的值,如果是,则条件为真。 (<= A B) is true.
    max 它比较两个或多个参数并返回最大值。 (max A B) returns 20
    min 它比较两个或多个参数并返回最小值。 (min A B) returns 10
  • 布尔值的逻辑运算

    Common LISP 提供了三种逻辑运算符:and, or,not对布尔值进行操作。认为A具有价值零和B值为 5,则 -
    操作符 描述 例子
    and 它接受任意数量的参数。参数从左到右计算。如果所有参数的计算结果都为非零,则返回最后一个参数的值。否则返回 nil。 (和 AB)将返回 NIL。
    or 它接受任意数量的参数。从左到右评估参数,直到一个评估为非零,在这种情况下返回参数值,否则返回nil. (或 AB)将返回 5。
    not 它接受一个参数并返回t如果参数计算为nil. (不是 A)将返回 T。
  • 数字的位运算

    按位运算符作用于位并执行逐位运算。按位与、或和异或运算的真值表如下:
    p q p xor q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1
    
    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 支持的按位运算符。假设变量A持有 60 和变量B持有 13,然后 -
    操作符 描述 例子
    logand 这将返回其参数的按位逻辑与。如果未给出参数,则结果为 -1,这是此操作的标识。 (logand ab)) 将给出 12
    logior 这将返回其参数的按位逻辑 INCLUSIVE OR。如果没有给出参数,则结果为零,这是此操作的标识。 (logior ab) 将给出 61
    logxor 这将返回其参数的按位逻辑异或。如果没有给出参数,则结果为零,这是此操作的标识。 (logxor ab) 将给出 49
    lognor 这将返回其参数的按位 NOT。如果未给出参数,则结果为 -1,这是此操作的标识。 (lognor ab) 将给出 -62,
    logeqv 这将返回其参数的按位逻辑 EQUIVALENCE(也称为异或)。如果未给出参数,则结果为 -1,这是此操作的标识。 (logeqv ab) 将给出 -50