Forth 中的逻辑与?
我知道 AND 词定义了二进制 and
...但是什么定义了逻辑 and
呢?
I know the AND word defines binary and
... but what defines logical and
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我知道 AND 词定义了二进制 and
...但是什么定义了逻辑 and
呢?
I know the AND word defines binary and
... but what defines logical and
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
相同单词
AND
也用于逻辑和。但AND
的两个输入值建议采用格式良好的标志; true 和 false 由两个值表示,全部设置的位 (-1) 和全部未设置的位 (0)。除这些值之外的其他值也可以正常工作(如 C 中),但可能会导致细微的错误。所有比较运算符都会返回格式良好的标志,但例如
-
则不会。以下计算结果为 false (0)。AND
获取位模式 100 和 010。结果为 0(因为它按位 and 进行运算)。参考文献:
The same word,
AND
, is also used for logical and. But the two input values toAND
are recommended to be well-formed flags; true and false are represented by two values, bits all set (-1) and bits all unset (0). Other values than these may work as true (as in C), but it may lead to subtle errors.All comparison operators return well-formed flags, but for instance
-
does not. The following evaluates to false (0).AND
gets bit patterns 100 and 010. The result is 0 (as it does the bitwise and).References:
第四个 AND 是对 64 位值进行按位 AND。当然,这些操作员戴着口罩工作得很好。但如果这些值全为 1 或全 0,则结果也为全 1 或全 0(按位 OR 和 XOR INVERT 运算也是如此)。
Forth 中的布尔标志是全 1 或全 0。因此,如果输入是布尔标志,则 AND OR XOR INVERT 的输出也是布尔值,因此这些运算符可用于表示布尔运算符。请注意 = < 之类的操作0= 产生布尔标志。
情况与+相同。由于整数被定义为二补码,因此 +(加号)可用于有符号数和无符号数。因此,无符号整数加法没有单独的名称。
The Forth AND is a bit-wise AND on 64 bit values. Of course these operators work okay with masks. But if these values are all ones or all zeroes, the result is also all ones or all zeroes (the same is true for bit-wise OR and XOR INVERT operations.).
A boolean flag in Forth is all ones or all zeroes. So if the inputs are boolean flags, the output of AND OR XOR INVERT are also booleans and those operators can thus be used to represent boolean operators. Please note that operations like = < 0= result in a boolean flag.
The situation is the same with +. Because integers are defined as two-complement, + (plus) can be used for signed as well as unsigned numbers. So there is no separate name for unsigned addition of integers.