PDA

Просмотр полной версии : Странности булевой функции НЕ (отрицание)



Santus
21.03.2022, 08:10
59779

Есть 2 состояния булевой логики 0 и 1, True и False
Откуда взялись -1 и -2 ?
Типизация источников сигналов булевая.

Santus
21.03.2022, 10:29
0 и 1 - это не булевая.
Булевая эта труя/фалься на входе в самом верхнем и в щиколотке от над ним.

ну и отсюда

интовый 0 превращается в -1, а интовый 1 в -2.

Спасибо за быстрый ответ! Осознал, что есть такое явление и как с ним бороться, но не понял зачем "брюки превращаются в элегантные шорты"! Это баг или фича Скады?

petera
21.03.2022, 11:30
Спасибо за быстрый ответ! Осознал, что есть такое явление и как с ним бороться, но не понял зачем "брюки превращаются в элегантные шорты"! Это баг или фича Скады?

Аналогично будет даже в калькуляторе!

https://owen.ru/forum/attachment.php?attachmentid=59780&d=1647851324

Santus
21.03.2022, 11:54
Хорошо. Возражений против логики никаких. Вопрос: Почему на входе логического элемента я могу установить 0 или 1 набором с клавиатуры, (часть логики не дорисована еще и просто имитирую часть схемы), а вот написать True или False тоже могу, но это значение входом не принимается?59781

petr2off
21.03.2022, 12:10
Заведите пару переменных, типа bool - Например Ptrue и PFalse с начальными значениями TRUE и FALSE. И используйте где надо

petr2off
22.03.2022, 06:42
Еще 5 копеек. Булевы функции используются не только в булевых выражениях, но и при обработки битов. Т.е. целое число рассматривается не как истино/ложно а как строка битов. Например, передается в скаду модбас регистр 16 разрядный, в котором старшие биты это состояние объекта, а младшие номер объекта. Таким образом, в одном регистре я могу получать состояние 256 объектов. А номер объекта смогу выделить с помощью логической функции AND. N10 := MReg AND 16#A; Т.е. применение булевых функций шире, чем булева логика.

melky
22.03.2022, 09:20
Не совсем понятно, чему вы удивляетесь? это нормально для многих языков...

petr2off
22.03.2022, 10:39
Если нужно получить номер устройства, то N10 :- MReg AND 16#FF
Если проверить, что это 10 устройство то Ваш вариант.
С утра просто не проснулся, смысл в том, что булева функция AND может использоватся для формирования булевого выражения, а может для формирования целого.
Т.е. ей на вход можно подать и 1 и ТRUE и это не тождественные случаи.

Денис Сухарев
24.03.2023, 12:41
В случае с булевой логикой (TRUE, FALSE) оператор AND это логическое "И",
а в случае целых чисел, это операция логического сложения,
то есть логическое "И" применяется ко всем парам бит двух складываемых целых чисел.
Таким образом работает принцип маски "0" обнуляют биты в результате, а "1" сохраняют исходное значение бит.

Newcomer
24.03.2023, 13:33
то есть логическое "И" применяется ко всем парам бит двух складываемых целых чисел.

Не логически складываемых, а логически умножаемых чисел.