Skip to main content
 首页 » 编程设计

sql之为什么 "Yes"在 MS Access 数据库中的值为 -1

2024年06月20日23zlslch

我正在查看 MS Access 中的链接数据。

“是/否”字段包含值 -1(是)和 0(否)。有人可以解释为什么这样一个反直觉的值用于"is"吗? (显然应该是1和0)

我想一定有一个很好的理由,我很想知道。

请您参考如下方法:

False 的二进制表示为 0000000000000000(使用多少位取决于实现)。如果对其进行二进制 NOT 运算,则会变为 1111111111111111,即 True,但这是有符号整数 -1< 的二进制表示.

最高有效位置的一位 1 表示有符号数的负数。通过反转所有位并加 1 来更改数字的符号。这称为 Two's complement .

让我们改变1111111111111111的符号。首先反转;我们得到: 0000000000000000

然后添加一个: 0000000000000001,这是1

这是 1111111111111111-1 的二进制表示的证明。

<小时 />

更新

此外,比较这些值时不要比较

x = -1 

x = 1 

相反,进行比较

x <> 0 

这总是给出正确的结果,与所使用的约定无关。大多数实现将任何不等于零的值视为True