MS Accessでリンクされたデータを見ています。
「はい/いいえ」フィールドには、YESの場合は-1、NOの場合は0の値が含まれます。そのような直感に反する値が「はい」に使用される理由を誰かが説明できますか? (明らかに、1と0でなければなりません)
正当な理由があるに違いないと思うので、それを知りたいです。
False
のバイナリ表現は0000000000000000
です(使用されるビット数は実装によって異なります)。バイナリNOT演算を実行すると、1111111111111111
、つまりTrue
に変更されますが、これは符号付き整数-1
のバイナリ表現です。
最上位の1
のビットは、符号付き数値の負の数を示します。数値の符号を変更するには、すべてのビットを反転して1を追加します。これは 2の補数 と呼ばれます。
1111111111111111
の符号を変更しましょう。最初の反転。取得:0000000000000000
次に0000000000000001
を追加します。これは1
です。
これは、1111111111111111
が-1
のバイナリ表現であったことの証明です。
[〜#〜] update [〜#〜]
また、これらの値を比較するときは比較しないでください
x = -1
または
x = 1
代わりに、比較してください
x <> 0
これにより、使用される規則に関係なく、常に正しい結果が得られます。ほとんどの実装は、ゼロ以外の値をTrue
として扱います。