2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Логические операции
Сообщение08.01.2013, 19:55 
Здравствуйте. Помогите разобраться в логических операциях. Имеется пример: Tobe OR NOT Tobe, Tobe — переменная. Допустим Tobe = 1, тогда NOT Tobe = 0 и на выходе получим 1, т.е. true. Я правильно понимаю, что второе Tobe меняет значение на противоположное, т.е. на выходе всегда будем иметь true?
И еще такой NOT z AND x OR y, я читаю это так: не z и не? (x или y), т.е. на выходе false будет всегда, если мы все отрицаем?
И где вообще можно что-то толковое не сильно углубленное по этому поводу почитать что бы разобраться? Большое спасибо.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 20:01 
А что тут читать, если не углубляться? Хватит таблиц истинности.
Trurlol в сообщении #668955 писал(а):
NOT z AND x OR y

Здесь должно быть ((NOT z) AND x) OR y.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 20:15 
AV_77 в сообщении #668962 писал(а):
А что тут читать, если не углубляться? Хватит таблиц истинности.
Trurlol в сообщении #668955 писал(а):
NOT z AND x OR y

Здесь должно быть ((NOT z) AND x) OR y.

Т.е. если z = 1, x= 1, y = 1
NOT z = 0
0 AND x = 0
0 OR y = 1

И допустим z = 0, x = 1, y = 0
NOT z = 1
1 AND x = 1
1 OR y = 1

Правильно?

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 20:21 
Trurlol в сообщении #668971 писал(а):
Правильно?

Да.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 20:31 
Аватара пользователя
Trurlol в сообщении #668955 писал(а):
Здравствуйте. Помогите разобраться в логических операциях. Имеется пример: Tobe OR NOT Tobe, Tobe — переменная.
Занятно, но результат операции может зависеть от реализации логических переменных. В простых случаях, конечно. истина, но ведь бывают и варианты, где допустима неопределённость - и тогда честный язык должен выдать ошибку, несмотря на...

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 20:53 
Аватара пользователя
Логические операциями работают с логическими переменными.
Цитата:
Допустим Tobe = 1
тогда в зависимости от языка либо будет ошибка либо сработает автоматическое приведение типов.

Цитата:
И еще такой NOT z AND x OR y, я читаю это так: не z и не? (x или y), т.е. на выходе false будет всегда, если мы все отрицаем?
Обычно унарные операции имеют больший приоритет.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 21:25 
Pavia в сообщении #668994 писал(а):
Логические операциями работают с логическими переменными.

Логическими операциями работают с логическими значениями. Да, спасибо ООП, люди теперь совершенно разучились различать переменную и ее значение, но... стоит все же это различие иметь в виду.

nikvic
Расскажите подробнее. Я еще не встречал языка, где вычисление выражения NOT BoolVariable имело бы побочный эффект в виде присваивания BoolVariable вычисленного значения этого выражения. Примерно то же относится и к OR.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 21:32 
Pavia в сообщении #668994 писал(а):
тогда в зависимости от языка либо будет ошибка либо сработает автоматическое приведение типов.
В некоторых языках нет логического типа.

Возможно, тема вообще помещена не в тот раздел, и тогда ничего неправильного в обозначении логических значений 0 и 1 нет — так их зовут довольно часто.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 22:02 
Аватара пользователя
Joker_vD в сообщении #669013 писал(а):
Я еще не встречал языка, где вычисление выражения NOT BoolVariable имело бы побочный эффект в виде присваивания BoolVariable вычисленного значения этого выражения. Примерно то же относится и к OR.

Я не о том. Первый пример имеет вид "А или не А", и, конечно, должен давать истину для любого уже определённого значения А. Однако вполне допускаю языки, в которых одного объявления логической переменной недостаточно - для применимости операторов она должна быть ещё и инициализирована.

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 22:20 
nikvic в сообщении #669044 писал(а):
Однако вполне допускаю языки, в которых одного объявления логической переменной недостаточно - для применимости операторов она должна быть ещё и инициализирована.

Ну вот, теперь я вспомнил о языках, где переменная может иметь значение Undefined :-( ... наитупейшая идея, если честно: если есть переменная, у нее есть какое-то значение. Обращение к значению неинициализированной переменной ловится элементарно что в интерпретируемом, что в компилируемом языке, зачем еще это уродство... ну будет значение-сюрприз, я даже когда писал игрушечный компилятор, инициализировал локальные переменные с помощью rand() ;)

Ладно, спасибо за напоминание, что есть уродства еще на свете :-)

 
 
 
 Re: Логические опереции
Сообщение08.01.2013, 22:33 
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).

 
 
 
 Re: Логические опереции
Сообщение09.01.2013, 00:23 
EtCetera в сообщении #669065 писал(а):
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).
Справедливости ради, $\left(x=x\right)\text{OR} \text{ NOT}\left(x=x\right)$ даже в этом случае будет истиной.

 
 
 
 Re: Логические опереции
Сообщение09.01.2013, 05:33 
Аватара пользователя
arseniiv

Цитата:
В некоторых языках нет логического типа.

Не помню таких. Разве что ассемблер.

Цитата:
Возможно, тема вообще помещена не в тот раздел, и тогда ничего неправильного в обозначении логических значений 0 и 1 нет — так их зовут довольно часто.

Хочу заметить, что битовые и логические операции разные. И значения у них разные.

EtCetera

EtCetera в сообщении #669065 писал(а):
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).

Пример неправильный. Вернёт true. Советую разобраться с числами с плавающей точкой.

 
 
 
 Re: Логические опереции
Сообщение09.01.2013, 10:54 
Pavia в сообщении #669140 писал(а):
Пример неправильный. Вернёт true.
Да, извиняюсь. Вот так, кажется, будет лучше: $\left(x<x\right)\text{OR}\left(x\ge x\right)$ или $\left(x<x\right)\text{OR}\left(x=x\right)\text{OR}\left(x> x\right)$. И с двумя переменными: $\left(x<y\right)\text{OR}\left(x\ge y\right)$ или $\left(x<y\right)\text{OR}\left(x=y\right)\text{OR}\left(x>y\right)$.

 
 
 
 Re: Логические опереции
Сообщение09.01.2013, 18:34 
Pavia в сообщении #669140 писал(а):
Не помню таких. Разве что ассемблер.
Если сейчас логический тип есть в C (не помню), его там не было очень много лет.

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group