4

直到几天前,我从未想到过这个问题。然而,上周有人在 SO 上问了一个关于 OpenCL C 语言中向量比较运算符的问题。这很容易回答,如果有人没有评论我的回答,那么一切都会停在那里:

如果条件为真并且向量返回 -1,标量返回 1 有点烦人。

我的第一个想法是“只要 0 为假且所有其他值都为真,谁在乎”。然后我认为在 true 时返回 -1 更有意义,因为这样所有位都已设置:如果 false 为 0000..000,那么让 1111...111 为 true 是很合乎逻辑的,我认为它甚至可能是对于一些按位运算很有用。

搜索更多关于这个主题,我发现有人建议在某些条件下设置所有位而不是 LSB 更快(这是针对 C 以外的另一种语言,不幸的是我找不到这篇文章)。

但是,如果我刚才所说的是正确的,为什么在 C 中选择值 1?我知道标准规定如此......但为什么呢?

是历史的吗?是因为某些系统不使用二进制补码表示吗?即便如此,这些系统返回 -1 会不会有问题?其实,有什么理由吗?

4

0 回答 0