Подтвердить что ты не робот

Почему "Да" значение -1 в базе данных MS Access?

Я просматриваю связанные данные в MS Access.

Поля "Да/Нет" содержат значение -1 для YES и 0 для NO. Может ли кто-нибудь объяснить, почему такое "интуитивное" значение используется для "Да"? (Очевидно, это должно быть 1 и 0)

Я предполагаю, что должна быть веская причина, и я хотел бы это знать.

4b9b3361

Ответ 1

Двоичное представление False равно 0000000000000000 (сколько бит используется, зависит от реализации). Если вы выполните на нем двоичную операцию NOT, она будет изменена на 1111111111111111, т.е. True, но это двоичное представление целого числа со знаком -1.

Немного 1 в наиболее значимой позиции сигнализирует отрицательное число для подписанных номеров. Изменение знака числа происходит путем инвертирования всех бит и добавления 1. Это называется Два дополнения.

Изменим знак 1111111111111111. Первый инвертированный; мы получаем: 0000000000000000

Затем добавьте один: 0000000000000001, это 1.

Это доказательство того, что 1111111111111111 было двоичным представлением -1.


UPDATE

Кроме того, при сравнении этих значений не сравнивайте

x = -1

или

x = 1

сравните

x <> 0

это всегда дает правильный результат, независимо от используемого соглашения. Большинство реализаций обрабатывают любое значение, равное нулю как True.

Ответ 2

"Да" - -1, потому что это не что-то еще.

При работе с продуктами Microsoft, особенно с такими же старыми, как Access, не предполагайте, что есть веская причина для любого выбора дизайна.