2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Дискретная. Логические операции между словами разной длинны?
Сообщение12.09.2007, 15:36 


30/08/07
13
Есть задача, нужно проверить некую 32-х битную последовательность на пренадлежность к одной из инструкций "I" - легальная = 1 иначе 0.
Нужная инстуркция содержит всегда 0 в старших 6 битах, по середке может быть все подряд и младшие 6 бит принимают следующие значения
01 0000
01 0001

и от 00 0000 до 00 1111
Есть решение:
рез = not I[31:26] and (I[5:4] or not{I[5] and I[4] and I[3:1]})
мне не совсем ясно как считается в этом случае. Допустим я еще понимаю not I[31:26] - тут мы получаем просто 1, но потом как...

 Профиль  
                  
 
 
Сообщение12.09.2007, 16:08 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Вы хотите создать решение или понять существующее?

Может быть, проще сделать что-то вроде

res = ( x < (1<<26)) && ( (x&63) < 18)

 Профиль  
                  
 
 
Сообщение12.09.2007, 21:14 


30/08/07
13
Я хотел бы конечно сначала разобраться с уже готовым решением, а потом попробовать найти новое. Я думал, что любое слово в котором есть хотя бы один бит отличный от 0 считается правдой. Это предположение действует на первую часть решения и вторую, т.е. I[31:26] всегда 0 => их отрицание всегда 1. Потом I[5:4] в двух случаях принимает значение 01 и тогда считается 1. Но дальше не понятно, почему если I[5:4] = 00 мы отдельно проверяем и 5 и 4 бит и уж совесм не понятно почему проверяется с 3 по 1 бит и уж тем более зачем когда они могут принимать любое значение от 0000 и до 1111?

 Профиль  
                  
 
 
Сообщение12.09.2007, 22:08 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Насколько я могу понять, у Вас в записи следующая ошибка: не должно быть фигурных скобок. Второй not должен действовать только на I[5]. Если хотите, можно открывающуюся фигурную скобку перенести перед этим not, хотя это излишне, так как по приоритету and выполняется раньше, чем or. Тогда вроде как все сходится. Либо оба бита 4-5 должны быть нулями, тогда содержимое самых младших годится любое, либо 5-ый ноль, 4-ый единица, с 1 по 3 должны быть нули, а последний любой.

Переношу в Computer Science.

 Профиль  
                  
 
 
Сообщение13.09.2007, 08:57 


30/08/07
13
То есть мое предположение правильно, любое слово хотя бы с одной 1 - это 1. Просто такое решение меня запутало. Его тогда нужно переписать так

not I[31:26] and (not I[5:4] or not I[5] and I[4] and not I[3:1])

 Профиль  
                  
 
 
Сообщение13.09.2007, 09:34 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Да, похоже все так.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group