我看明经翻译的LISP语言讲解 我看不懂这是怎么用的呢
大大们! 若有知情的 可以不可以帮我讲解一下呢~~~ 谢谢 10万的谢意 谢谢你们
用作一个通用的按位逻辑运算函数 (Boole operator int1 [int2 ...])
参数
operator
0 和 15 之间的整数,代表 16 种可能的双变量布尔函数。
int1, int2...
整数。
请注意 Boole 可以接受单一整数参数,但结果不可预料。
后续的整数参数将根据函数和如下真值表逐位(逻辑上)组合在一起:
布尔真值表 |
Int1 |
Int2 |
操作位 |
0 |
0 |
8 |
0 |
1 |
4 |
1 |
0 |
2 |
1 |
1 |
1 |
参数 int1 的每一位与参数 int2 的对应位相匹配,指定真值表中的某一行。运算结果的该位可能是 0 或 1,这取决于真值表中这一行所对应的操作位的设置情况。
如果相应操作位和真值表一致,则结果位为 1;否则结果位为 0。operator 参数的某些取值等效于标准布尔运算 AND(与)、OR(或)、XOR(异或)和 NOT(非)。
Boole 函数的位值 |
运算符 |
运算 |
结果位为 1 的条件 |
1 |
AND |
两个输入位均为 1 |
6 |
XOR |
两个输入位仅有一个为 1 |
7 |
OR |
有一个或两个输入位为 1 |
8 |
NOR |
两个输入位均为 0(1 的补) |
返回值
整数。
示例
下列代码进行数 12 和 5 的逻辑与 (AND) 运算:
命令: (Boole 1 12 5)
4
下列代码进行数 6 和 5 的逻辑异或 (XOR) 运算:
命令: (Boole 6 6 5)
3
也可以使用 operator 的其他值来执行没有标准名的其他布尔运算。例如,如果 operator 是 4,那么只有在 int2 的位为 1,而 int1 的对应位为 0 时,其结果位才为 1,因此:
命令: (Boole 4 3 14)
12 |