EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

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


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

Learn, learn and learn better than work, work and work.
Written on: 03. 02. 2011 [06:11]
SergGray
Сергей Гурьянов
Topic creator
registered since: 02.02.2011
Posts: 50
Здравствуйте Роман. После прочтения документации у меня есть только такое решение моей проблемы прочитанное целое число написанной мной функцией поделить на биты собрать из них строку и уже с этой строкой работать дальше. Т.к. функции преобразования целого числа в двоичное число я не нашел. есть правда в документации какая то функция StrEnc2Bin но она упоминается в примере вызова функции самый конец пункта 1.5 и более нигде не описана.
Written on: 03. 02. 2011 [07:32]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 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

[This article was edited 4 times, at last 03.02.2011 at 07:40.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 03. 02. 2011 [08:52]
SergGray
Сергей Гурьянов
Topic creator
registered since: 02.02.2011
Posts: 50
спасибо, конечно все так просто, в некоторых языках есть свои отличия в синтаксисах. насколько применимы Си операторы в опен скаде я не знаю в модуле java calc я как то про это не нашел. Если синтаксис Си работает без проблем то вопросов минимум
Written on: 03. 02. 2011 [09:12]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"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.
Written on: 03. 02. 2011 [11:48]
SergGray
Сергей Гурьянов
Topic creator
registered since: 02.02.2011
Posts: 50
Еще раз спасибо. Не понятно было следующее я просто искал функцию которая бы это делала сама. После разьяснений ясно что это необходимо делать используя математику. Просто я еще не привык к особенностям опен сорсе. И то что для Вас само собой разумеется мне еще придется освоить.



2280