Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Смысловое значение кода программы |
Автор: shinoby 26.11.2011, 17:59 |
Попросили нарисовать блок-схемы для программы предназначенной для прибора, однако столкнулся с проблемой понимания нескольких строчек кода. Надеюсь вы мне поможете понять, что они означают (могут означать). 1-ая: s=s>>1 2-ая: PORTB=PORTB|s или PORTB=des|s (что дает вертикальная линия?) |
Автор: Twelves 26.11.2011, 19:04 |
1) Это побитовый сдвиг влево. все биты числа сдвигаются в данном случае на один влево, при этом младший теряется. т.е если у тебя есть число 7 и ты напишешь 7 >> 1, то у тебя получится число 3 (семь в двоичном представлении 111 - сдвигаем, получаем - 011) 2) Одна | вертикальная черта - это побитовое ИЛИ. К соответствующим битам двух чисел применяется операция ИЛИ. и получается результат. например: результат 4 | 2 это 6 (100 | 10 = 110) |
Автор: shinoby 26.11.2011, 23:31 | ||||
В принципе я тоже так предполагал, единственное, что меня смущало, да и сейчас смущает это то, что я вижу замкнутый цикл из которого нет выхода. Ниже привожу отрывок кода:
|
Автор: Dem_max 27.11.2011, 05:48 |
ну а почему он не может быть ? |
Автор: drug007 28.11.2011, 07:02 |
Дело в том, что речь идет о программе для встроенного устройства, которое работает без какой-либо ОС. Грубо говоря, когда включается устройство, сразу начинает работать данная программа, без загрузки какого-либо другого софта. Если не будет постоянного цикла, то программа выполнится один раз и прибор перестанет работать. А в цикле он будет работать пока вы его не выключите. А так как программа единолично распоряжается работой прибора, ей не надо согласовывать свою работу с другими программами, поэтому цикл без выхода простое и даже элегантное решение. Это обычная организация выполнения кода во встраиваемых(embedded) приложениях. |
Автор: fish9370 28.11.2011, 10:35 |
вобще-то это сдвиг вправо ![]() а прогу писал извращенец |
Автор: Twelves 28.11.2011, 12:04 | ||
оу. ![]() |