it-swarm.com.de

Warum ist "Ja" ein Wert von -1 in der MS Access-Datenbank?

Ich sehe verknüpfte Daten in MS Access.

Die Felder "Ja/Nein" enthalten den Wert -1 für JA und 0 für NEIN. Kann jemand erklären, warum ein solcher kontraintuitiver Wert für "Ja" verwendet wird? (Offensichtlich sollte es 1 und 0 sein)

Ich stelle mir vor, es muss einen guten Grund geben und ich würde es gerne wissen.

44
Supermitch

Die Binärdarstellung von False ist 0000000000000000 (Wie viele Bits verwendet werden, hängt von der Implementierung ab). Wenn Sie eine binäre NOT-Operation ausführen, wird diese in 1111111111111111 Geändert, d. H. True, dies ist jedoch die binäre Darstellung der vorzeichenbehafteten Ganzzahl -1.

Ein bisschen 1 An der höchstwertigen Position signalisiert eine negative Zahl für vorzeichenbehaftete Zahlen. Das Vorzeichen einer Zahl wird geändert, indem alle Bits invertiert und 1 addiert werden. Dies wird als Zweierkomplement bezeichnet.

Lassen Sie uns das Vorzeichen von 1111111111111111 Ändern. Zuerst invertieren; wir bekommen: 0000000000000000

Dann füge eins hinzu: 0000000000000001, Das ist 1.

Dies ist der Beweis, dass 1111111111111111 Die binäre Darstellung von -1 War.


[~ # ~] Update [~ # ~]

Auch beim Vergleich dieser Werte nicht vergleichen

x = -1

oder

x = 1

vergleichen Sie stattdessen

x <> 0

dies ergibt immer das richtige Ergebnis, unabhängig von der verwendeten Konvention. Die meisten Implementierungen behandeln jeden Wert ungleich Null als True.