- LISP 教程
- LISP - 主页
- LISP - 概述
- LISP - 环境
- LISP - 程序结构
- LISP - 基本语法
- LISP - 数据类型
- LISP - 宏
- LISP - 变量
- LISP - 常量
- LISP - 运算符
- LISP - 决策
- LISP - 循环
- LISP - 函数
- LISP - 谓词
- LISP - 数字
- LISP - 字符
- LISP - 数组
- LISP - 字符串
- LISP - 序列
- LISP - 列表
- LISP - 符号
- LISP - 向量
- LISP - 设置
- LISP - 树
- LISP - 哈希表
- LISP - 输入和输出
- LISP - 文件 I/O
- LISP - 结构
- LISP - 包
- LISP - 错误处理
- LISP-CLOS
- LISP 有用资源
- Lisp - 快速指南
- Lisp - 有用的资源
- Lisp - 讨论
LISP - 运算符
运算符是告诉编译器执行特定数学或逻辑操作的符号。LISP 允许对数据进行多种操作,并由各种函数、宏和其他结构支持。
允许对数据进行的操作可分为 -
- 算术运算
- 比较运算
- 逻辑运算
- 按位运算
算术运算
下表列出了 LISP 支持的所有算术运算符。假设变量A为 10,变量B为 20,则 -
操作员 | 描述 | 例子 |
---|---|---|
+ | 添加两个操作数 | (+AB) 将给出 30 |
- | 从第一个操作数中减去第二个操作数 | (- AB) 将给出 -10 |
* | 将两个操作数相乘 | (* AB) 将给予 200 |
/ | 分子除以分子 | (/BA) 将给出 2 |
模组,雷姆 | 模数运算符和整数除法后的余数 | (mod BA) 将给出 0 |
因CF | 增量运算符将整数值增加指定的第二个参数 | (incf A 3) 将给出 13 |
十倍频 | 递减运算符将整数值减少指定的第二个参数 | (decf A 4) 将给出 9 |
比较运算
下表显示了 LISP 支持的所有用于在数字之间进行比较的关系运算符。然而,与其他语言中的关系运算符不同,LISP 比较运算符可能需要两个以上的操作数,并且它们仅适用于数字。
假设变量A为 10,变量B为 20,则 -
操作员 | 描述 | 例子 |
---|---|---|
= | 检查操作数的值是否全部相等,如果相等则条件成立。 | (= AB) 不正确。 |
/= | 检查操作数的值是否全部不同,如果值不相等则条件成立。 | (/= AB) 为真。 |
> | 检查操作数的值是否单调递减。 | (> AB) 不正确。 |
< | 检查操作数的值是否单调递增。 | (<AB) 为真。 |
>= | 检查任何左操作数的值是否大于或等于下一个右操作数的值,如果是,则条件为真。 | (>= AB) 不正确。 |
<= | 检查任何左操作数的值是否小于或等于其右操作数的值,如果是,则条件为真。 | (<= AB) 为真。 |
最大限度 | 它比较两个或多个参数并返回最大值。 | (最大 AB)返回 20 |
分钟 | 它比较两个或多个参数并返回最小值。 | (最小 AB)返回 10 |
布尔值的逻辑运算
Common LISP 提供了三种逻辑运算符:and、or和not,它们对布尔值进行运算。假设A的值为 nil,B的值为 5,则 -
操作员 | 描述 | 例子 |
---|---|---|
和 | 它需要任意数量的参数。参数从左到右计算。如果所有参数的计算结果均为非零,则返回最后一个参数的值。否则返回 nil。 | (和 AB)将返回 NIL。 |
或者 | 它需要任意数量的参数。参数从左到右计算,直到计算结果为非 nil,在这种情况下返回参数值,否则返回nil。 | (或 AB)将返回 5。 |
不是 | 它接受一个参数,如果该参数的计算结果为nil ,则返回t 。 | (不是 A)将返回 T。 |
数字的按位运算
位运算符作用于位并执行逐位运算。按位与、或和异或运算的真值表如下 -
p | q | p 和 q | p 或 q | 异或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,则 -
操作员 | 描述 | 例子 |
---|---|---|
洛甘德 | 这将返回其参数的按位逻辑与。如果未给出参数,则结果为 -1,这是此操作的标识。 | (logand ab)) 将给出 12 |
洛焦尔 | 这将返回其参数的按位逻辑“或”。如果未给出参数,则结果为零,这是此操作的恒等式。 | (logior ab) 将给出 61 |
对数异或 | 这将返回其参数的按位逻辑异或。如果未给出参数,则结果为零,这是此操作的恒等式。 | (logxor ab) 将给出 49 |
洛格诺 | 这将返回其参数的按位 NOT。如果未给出参数,则结果为 -1,这是此操作的标识。 | (lognor ab) 将给出 -62, |
对数 | 这将返回其参数的按位逻辑等价(也称为异或非)。如果未给出参数,则结果为 -1,这是此操作的标识。 | (logeqv ab) 将给出 -50 |