УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Побитовые операции


Автор Сообщение
Сообщение создано: 02. 02. 2011 [12:08]
SergGray
Сергей Гурьянов
Создатель темы
Зарегистрирован(а) с: 02.02.2011
Сообщения: 50
Доброго дня. У меня вопрос по документации не смог найти ничего про операции над отдельными битами. Где найти, или если такого нет то как правильно организовать. Пример прочитал регистр 16 bit теперь каждый бит надо отдельно оработать. Спасибо.
Сообщение создано: 02. 02. 2011 [12:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3743
http://wiki.oscada.org/Doc/JavaLikeCalc?v=32d#h101-5

Learn, learn and learn better than work, work and work.
Сообщение создано: 03. 02. 2011 [06:11]
SergGray
Сергей Гурьянов
Создатель темы
Зарегистрирован(а) с: 02.02.2011
Сообщения: 50
Здравствуйте Роман. После прочтения документации у меня есть только такое решение моей проблемы прочитанное целое число написанной мной функцией поделить на биты собрать из них строку и уже с этой строкой работать дальше. Т.к. функции преобразования целого числа в двоичное число я не нашел. есть правда в документации какая то функция StrEnc2Bin но она упоминается в примере вызова функции самый конец пункта 1.5 и более нигде не описана.
Сообщение создано: 03. 02. 2011 [07:32]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Все данные хранятся и обрабатываются в виде битов. Машины-то двоичные. Приведённые в документации битовые операции (совместно с операторами ветвления и др.) позволяют делать с битами всё. Вот почитайте:
http://chipenable.ru/index.php/programming-c/4-set-bits-avr-define.html
http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&q=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D0%B1%D0%B8%D1%82%D0%B0%D0%BC%D0%B8&aq=f&aqi=g4&aql=&oq=&pbx=1&psj=1&fp=df8f9fa35087e459

Любой бит числа можно узнать операцией И этого числа по маске (другому числу с одним установленным битом). Дальше ветвление по результату. Для Вашего случая маски 1 (0000000000000001), 2 (0000000000000010), 4, 8, 16, 32, 64, 128, 256, ... позволяют выделить любой бит, начиная с младшего.

PS Работа с битами производится также, как в любых других языках программирования, так как это просто двоичная математика.
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%B0%D1%81%D0%BA%D0%B0
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5
http://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F

[Сообщение редактировалось 4 раз(а), в последний раз 03.02.2011 в 07:40.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 03. 02. 2011 [08:52]
SergGray
Сергей Гурьянов
Создатель темы
Зарегистрирован(а) с: 02.02.2011
Сообщения: 50
спасибо, конечно все так просто, в некоторых языках есть свои отличия в синтаксисах. насколько применимы Си операторы в опен скаде я не знаю в модуле java calc я как то про это не нашел. Если синтаксис Си работает без проблем то вопросов минимум
Сообщение создано: 03. 02. 2011 [09:12]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3743
"SergGray" wrote:

спасибо, конечно все так просто, в некоторых языках есть свои отличия в синтаксисах. насколько применимы Си операторы в опен скаде я не знаю в модуле java calc я как то про это не нашел.

А ссылку http://wiki.oscada.org/Doc/JavaLikeCalc?v=32d#h101-5 я на что Вам дал?
Что не понятного в строках таблицы операций?
JAVASCRIPT
|	Поразрядное «ИЛИ»
&	Поразрядное «И»
^	Поразрядное «Исключающее ИЛИ»
&&	Логический «И»
||	Логический «ИЛИ»


Learn, learn and learn better than work, work and work.
Сообщение создано: 03. 02. 2011 [11:48]
SergGray
Сергей Гурьянов
Создатель темы
Зарегистрирован(а) с: 02.02.2011
Сообщения: 50
Еще раз спасибо. Не понятно было следующее я просто искал функцию которая бы это делала сама. После разьяснений ясно что это необходимо делать используя математику. Просто я еще не привык к особенностям опен сорсе. И то что для Вас само собой разумеется мне еще придется освоить.



2482