www.open-tager.ru https://open-tager.ru/forum/ |
|
Вопрос программистам про операторы. https://open-tager.ru/forum/viewtopic.php?f=5&t=2051 |
Страница 1 из 1 |
Автор: | Инквизитор [ 12 апр 2013, 00:34 ] |
Заголовок сообщения: | Вопрос программистам про операторы. |
Строю интересный девайс. Уперся в недостаточные свои знания. Вводная: Использую 4 бита. (в байте забираю для нужд 4 первых бита) Изначально одна(или две) единички случайным образом (например 0010) 1. вопрос. Как случайным образом добавить туда еще единичку? (наример 0010 ---> 0110) а потом еще одну.0110-->1110 Сейчас пытался реализовать оператором OR с байтом 00010001 в котором сдвигаю влево через флаг, но что то не срастается. 2й вопрос: Как получить TRUE при совпадении мест хотя бы одной единички при сравнении с другим байтом? т.е. 0110 и 0010 = тру? ЗЫ ответ хотелось бы в PIC Basice |
Автор: | ВовВовыч [ 12 апр 2013, 00:44 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
ну по первому вопросу видимо условно случайные числа надо использовать,а по второму-маску. ИМХО,ибо поздно)) |
Автор: | mail_robot [ 12 апр 2013, 04:31 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
во втором вопросе поможет операция XOR, она даст байт отличный от нуля, если маска совпала с образцом и она не нулевая а в первом бейсиком я не знаю как решить, на сях там проще простого было бы. Хотя можно решить. Чтобы добавить единичку в байт надо просто сложить его с маской и все. Там появится единичка, где единичка будет в слагаемом. Только надо точно знать что на месте той единички до этого был нолик, иначе будет перенос и единичка появится в другом месте лучше всетки использовать OR по маске для этой цели |
Автор: | tommy [ 12 апр 2013, 09:10 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
чёта народ ночью понаписал странного. Цитата: 0110 и 0010 = тру? нам поможет проверка на ноль результата побитовой конъюнкции (И). Цитата: 1. вопрос. Как случайным образом добавить туда еще единичку? (наример 0010 ---> 0110) а потом еще одну.0110--1110 Сейчас пытался реализовать оператором OR с байтом 00010001 в котором сдвигаю влево через флаг, но что то не срастается. всё должно работать. X OR Y, где Y - это произвольный бит (0001, 0010, 0100, 1000). может биты совпадают и результата не видно - 0010 or 0010 = 0010? тогда уже всё зависит от требований. можно сдвинуть Y влево/вправо, можно вообще табличку замутить на 32 поля маски и вообще не париться со сдвигами. при этом поле будет полубит в худшем случае, либо 2 бита, если индекс единички хранить.
|
Автор: | mail_robot [ 12 апр 2013, 09:12 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
а еще проще писать на си, там это все без выноса мозга организовано уже |
Автор: | Инквизитор [ 12 апр 2013, 11:09 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
Спасибо. 1. Буду пользовать OR и сдвиг. А при совпадении единичек - пусть будет "воля случая" - не добавиться единичка. 2. AND и правда решит мою задачку ) |
Автор: | Инквизитор [ 13 апр 2013, 17:37 ] |
Заголовок сообщения: | Re: Вопрос программистам про операторы. |
Инквизитор писал(а): Спасибо. 1. Буду пользовать OR и сдвиг. А при совпадении единичек - пусть будет "воля случая" - не добавиться единичка. 2. AND и правда решит мою задачку ) 1. Со сдвигом как то не срослось. Сделал LOOKUP |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |