![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
shinoby |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Попросили нарисовать блок-схемы для программы предназначенной для прибора, однако столкнулся с проблемой понимания нескольких строчек кода. Надеюсь вы мне поможете понять, что они означают (могут означать).
1-ая: s=s>>1 2-ая: PORTB=PORTB|s или PORTB=des|s (что дает вертикальная линия?) |
|||
|
||||
Twelves |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.6.2011 Репутация: нет Всего: нет |
1) Это побитовый сдвиг влево. все биты числа сдвигаются в данном случае на один влево, при этом младший теряется.
т.е если у тебя есть число 7 и ты напишешь 7 >> 1, то у тебя получится число 3 (семь в двоичном представлении 111 - сдвигаем, получаем - 011) 2) Одна | вертикальная черта - это побитовое ИЛИ. К соответствующим битам двух чисел применяется операция ИЛИ. и получается результат. например: результат 4 | 2 это 6 (100 | 10 = 110) Это сообщение отредактировал(а) Twelves - 26.11.2011, 19:04 |
|||
|
||||
shinoby |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
В принципе я тоже так предполагал, единственное, что меня смущало, да и сейчас смущает это то, что я вижу замкнутый цикл из которого нет выхода. Ниже привожу отрывок кода:
|
||||
|
|||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
ну а почему он не может быть ?
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
drug007 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Дело в том, что речь идет о программе для встроенного устройства, которое работает без какой-либо ОС. Грубо говоря, когда включается устройство, сразу начинает работать данная программа, без загрузки какого-либо другого софта. Если не будет постоянного цикла, то программа выполнится один раз и прибор перестанет работать. А в цикле он будет работать пока вы его не выключите. А так как программа единолично распоряжается работой прибора, ей не надо согласовывать свою работу с другими программами, поэтому цикл без выхода простое и даже элегантное решение. Это обычная организация выполнения кода во встраиваемых(embedded) приложениях.
|
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
вобще-то это сдвиг вправо ![]() а прогу писал извращенец -------------------- undefined |
|||
|
||||
Twelves |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.6.2011 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |