www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 ноя 2024, 00:12

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 12 апр 2013, 00:34 
Не в сети
Местный
Аватар пользователя

Зарегистрирован: 13 апр 2012, 14:01
Сообщений: 441
Откуда: Тегусигальпа
Строю интересный девайс. Уперся в недостаточные свои знания.
Вводная:
Использую 4 бита. (в байте забираю для нужд 4 первых бита)
Изначально одна(или две) единички случайным образом (например 0010)

1. вопрос. Как случайным образом добавить туда еще единичку? (наример 0010 ---> 0110) а потом еще одну.0110-->1110
Сейчас пытался реализовать оператором OR с байтом 00010001 в котором сдвигаю влево через флаг, но что то не срастается.

2й вопрос: Как получить TRUE при совпадении мест хотя бы одной единички при сравнении с другим байтом? т.е. 0110 и 0010 = тру?


ЗЫ ответ хотелось бы в PIC Basice :)

_________________
Вечно молодой, вечно пьяный...

www.lasertag76.ru


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 апр 2013, 00:44 
Не в сети
Местный

Зарегистрирован: 16 окт 2012, 15:55
Сообщений: 324
ну по первому вопросу видимо условно случайные числа надо использовать,а по второму-маску.
ИМХО,ибо поздно))


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 апр 2013, 04:31 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
во втором вопросе поможет операция XOR, она даст байт отличный от нуля, если маска совпала с образцом и она не нулевая

а в первом бейсиком я не знаю как решить, на сях там проще простого было бы. Хотя можно решить. Чтобы добавить единичку в байт надо просто сложить его с маской и все. Там появится единичка, где единичка будет в слагаемом. Только надо точно знать что на месте той единички до этого был нолик, иначе будет перенос и единичка появится в другом месте
лучше всетки использовать OR по маске для этой цели


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 апр 2013, 09:10 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
чёта народ ночью понаписал странного.

Цитата:
0110 и 0010 = тру?

нам поможет проверка на ноль результата побитовой конъюнкции (И).

Цитата:
1. вопрос. Как случайным образом добавить туда еще единичку? (наример 0010 ---> 0110) а потом еще одну.0110--1110 Сейчас пытался реализовать оператором OR с байтом 00010001 в котором сдвигаю влево через флаг, но что то не срастается.
всё должно работать. X OR Y, где Y - это произвольный бит (0001, 0010, 0100, 1000). может биты совпадают и результата не видно - 0010 or 0010 = 0010? тогда уже всё зависит от требований. можно сдвинуть Y влево/вправо, можно вообще табличку замутить на 32 поля маски и вообще не париться со сдвигами. при этом поле будет полубит в худшем случае, либо 2 бита, если индекс единички хранить.


Последний раз редактировалось tommy 12 апр 2013, 09:13, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 апр 2013, 09:12 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
а еще проще писать на си, там это все без выноса мозга организовано уже


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 апр 2013, 11:09 
Не в сети
Местный
Аватар пользователя

Зарегистрирован: 13 апр 2012, 14:01
Сообщений: 441
Откуда: Тегусигальпа
Спасибо.
1. Буду пользовать OR и сдвиг. А при совпадении единичек - пусть будет "воля случая" - не добавиться единичка.
2. AND и правда решит мою задачку )

_________________
Вечно молодой, вечно пьяный...

www.lasertag76.ru


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 апр 2013, 17:37 
Не в сети
Местный
Аватар пользователя

Зарегистрирован: 13 апр 2012, 14:01
Сообщений: 441
Откуда: Тегусигальпа
Инквизитор писал(а):
Спасибо.
1. Буду пользовать OR и сдвиг. А при совпадении единичек - пусть будет "воля случая" - не добавиться единичка.
2. AND и правда решит мою задачку )


1. Со сдвигом как то не срослось. Сделал LOOKUP

_________________
Вечно молодой, вечно пьяный...

www.lasertag76.ru


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB