|
Чот означает строка..., CodeVisionAVR |
|
|
|
Nov 21 2009, 17:12
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(LexRoss @ Nov 21 2009, 19:59)  Я правильно понял, что RC5_buffer [8] << 5 означает запись в 5 бит command 8-ой ячейки массива? Нет. Это означает: взять 8 элемент массива Код RC5_buffer (индекс начинается с 0) и сдвинуть его содержимое на 5 бит налево, т.е умножить на 2^5. Это стандартные операторы языка С. Код (RC5_buffer [8] << 5)|(RC5_buffer [9] << 4)|(RC5_buffer [10] << 3 )|(RC5_buffer [11] << 2)|(RC5_buffer [12] << 1)|RC5_buffer [13] С остальными элементами массива аналогично. Затем все результаты сдвигов подвергаются операции побитного логического ИЛИ. P.S. По поводу использования codevision avr много было замечаний. Лучше использовать компилятор соответствующий стандарту языка. WHALE опередил.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Nov 21 2009, 17:19
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680

|
Немного офтопа. Чтобы было понятне нужно писать нагляднее. К примеру так: Код command = RC5_buffer[13] << 0; command |= RC5_buffer[12] << 1; command |= RC5_buffer[11] << 2; command |= RC5_buffer[10] << 3; command |= RC5_buffer [9] << 4; command |= RC5_buffer [8] << 5; Неуважение какое-то к себе и остальным..
|
|
|
|
|
Nov 21 2009, 22:55
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680

|
SysRq Ну чтобы не уповать на оптимизации компилятора, можно немного "перефразировать" конструкцию: Код command = (RC5_buffer[13] << 0) | (RC5_buffer[12] << 1) | (RC5_buffer[11] << 2) | (RC5_buffer[10] << 3) | (RC5_buffer [9] << 4) | (RC5_buffer [8] << 5);
|
|
|
|
|
Nov 23 2009, 00:20
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(baralgin @ Nov 22 2009, 00:55)  можно немного "перефразировать" конструкцию: Код command = 0 | (RC5_buffer[13] << 0) | (RC5_buffer[12] << 1) | (RC5_buffer[11] << 2) | (RC5_buffer[10] << 3) | (RC5_buffer [9] << 4) | (RC5_buffer [8] << 5) ; Так легче править - можно добавить/удалить/закомментировать любую строчку со сдвигом.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 23 2009, 04:52
|
Местный
  
Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391

|
Цитата(mdmitry @ Nov 21 2009, 22:12)  P.S. По поводу использования codevision avr много было замечаний. Лучше использовать компилятор соответствующий стандарту языка. Это замечание тут ни к чему. Только "понты" с Вашей стороны. Подобную строку можно написать при работе хоть с WinAVR, хоть с IAR.
|
|
|
|
|
Nov 23 2009, 17:39
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
2 WHALE. Я не собираюсь заниматься религиозными войнами. Поиск по форуму дает пищу для размышлений, особенно если писать реентабельный код: пример 1пример 2пример 3Судя по форуму, Вам нравится Codevision и Вы им умеете пользоваться. Пользователь должен знать, а лучше понимать, ограничения используемого инструмента. В разделе для начинающих, на мой взгляд, подобное предупреждение вполне уместно. Вопросы сравнения в данном разделе некорректены
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Nov 23 2009, 18:54
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(mdmitry @ Nov 23 2009, 20:39)  2 WHALE. Я не собираюсь заниматься религиозными войнами. Поиск по форуму дает пищу для размышлений, особенно если писать реентабельный код: Ок, религиозная война отменяется.Возражать по вашим ссылкам не буду,скажу в общем-это не аргументы. Частично устарело,частично не соответсвует действительности. И должен заметить,что топик стартер не спрашивал,какой инструмент ему применить,он его уже применяет. Так что ваше замечание,с которого началось, как минимум было оффтопитоком.Но на этом ша...
Причина редактирования: Излишнее цитирование.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Nov 24 2009, 03:19
|
Местный
  
Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391

|
Цитата(mdmitry @ Nov 23 2009, 17:59)  Сравните соответствие стандарту С99, а потом, пожалуйста, употребляйте "понты" и другие выражения. На эту тему на форуме полно информации, потрудитесь хотя бы прочитать то, что есть в обсуждениях. Вы меня не так поняли. При чем тут стандарт С99? Хотите сказать что строку, приведенную топик-стартером нельзя написать в WinAVR или IAR? Можно! И следовательно к CodeVisionAVR совершенно никаких претензий, тема называется "Что означает строка...", т.е. без привязки к компилятору. Насчет инструмента автор не спрашивал, и сообщать что "CVAVR говно" тут не к месту, каждый волен сам решать чем ему пользоваться.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|