it-swarm-ja.com

MicrosoftAccessの「yes / no」値が-1と0にマップされるのはなぜですか?

-1の使用は私を困惑させます。値は次のようになると予想していました。

  • いいえ-> 0
  • はい-> + 1

+1の代わりに-1を使用した歴史的な理由はありますか?

4
Ale

Stack Overflow here で説明したように、Yes/Trueの値はAccessに-1として表示されます。

  • AccessのYes/Noフィールドはbitフィールドを模倣します。
  • AccessのInteger値は署名されています、 2の補数 値、
  • No/Falseは0で表され、
  • 1ビット数の他の2の補数は-1だけです。説明のために、2の補数は次の値を持つことができます。

3ビット:

bits  integer
----  -------
000         0
001         1
010         2
011         3
100        -4
101        -3
110        -2
111        -1

2ビット:

bits  integer
----  -------
00          0
01          1
10         -2
11         -1

1ビット:

bits  integer
----  -------
0           0
1          -1

bitフィールドの整数表現(つまり、1ビット)の場合、0がNo/Falseの場合、Yes/Trueに使用できる他の値は-1のみです。

5
Gord Thompson