Повідомлення створено: 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
Повідомлення: 3750
|
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
Повідомлення: 3750
|
"SergGray" wrote:
спасибо, конечно все так просто, в некоторых языках есть свои отличия в синтаксисах. насколько применимы Си операторы в опен скаде я не знаю в модуле java calc я как то про это не нашел.
А ссылку http://wiki.oscada.org/Doc/JavaLikeCalc?v=32d#h101-5 я на что Вам дал?
Что не понятного в строках таблицы операций?
| Поразрядное «ИЛИ»
& Поразрядное «И»
^ Поразрядное «Исключающее ИЛИ»
&& Логический «И»
|| Логический «ИЛИ»
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 03. 02. 2011 [11:48]
|
SergGray
Сергей Гурьянов
Автор теми
Зареєстрован(а) с: 02.02.2011
Повідомлення: 50
|
Еще раз спасибо. Не понятно было следующее я просто искал функцию которая бы это делала сама. После разьяснений ясно что это необходимо делать используя математику. Просто я еще не привык к особенностям опен сорсе. И то что для Вас само собой разумеется мне еще придется освоить.
|