Есть две переменные unsigned char. Как в Codevision найти xor i-го бита 1-й переменной с j-м битом второго ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Виноградов Алексей
23 октября 2004 г. 14:16
Составить ответ
|||
Конференция
|||
Архив
Ответы
res = ((x>>i) ^ (y>>j)) & 0xFE. Некоторые действия можно выбросить в зависимости от того что надо
—
F8
(23.10.2004 14:59,
пустое
)
упс... уже было
—
F8
(23.10.2004 15:02,
пустое
)
Я, конечно , не знаток CodeVision, но по моему запись твоего варианта должна выглядеть так(+)
—
=L.A.=
(23.10.2004 15:55, 169 байт)
угу
—
ы
(23.10.2004 16:02,
пустое
,
ссылка
)
не...такого еще не было...было & 1 а не &FE:))))
—
ы
(23.10.2004 15:19,
пустое
)
То есть, обнулить его нахрен, чтоб мозги не ломать - и все дела.
—
=L.A.=
(23.10.2004 15:24,
пустое
)
ну так не честно... А потрахаться? ;О)
—
=mse=
(23.10.2004 15:02,
пустое
)
Ну, а чтоб потрахатся(+)
—
F8
(23.10.2004 16:57, 172 байт)
В смысле(+)
—
F8
(23.10.2004 17:01, 162 байт)
ну наверное - так...
—
=mse=
(23.10.2004 14:30, 165 байт)
только маски наложить, в байтах ведь еще и другие биты.
—
DASM
(23.10.2004 14:33,
пустое
)
У меня ассемблерное мышление ;О) Jmp по номеру бита ;О).
—
=mse=
(23.10.2004 14:54,
пустое
)
Сорри, сбился с мысли. Xor i-го бита 1-й переменной с j-м битом второй переменной
—
Виноградов Алексей
(23.10.2004 14:19,
пустое
)
result = (var1 & 1 << i ? 1 : 0 ) ^ (var2 & 1 << j ? 1 : 0 );
—
DASM
(23.10.2004 14:26,
пустое
)
ерунду написал...хor битов будет тока если i==j
—
ы
(23.10.2004 14:47,
пустое
)
чавоооо ?
—
DASM
(23.10.2004 14:51,
пустое
)
тавооо:)) опять ты со своими приоритетами операций...наизусть чтоли выучил:)
—
ы
(23.10.2004 14:53,
пустое
)
и где у меня ошибка в приоритетах ?
—
DASM
(23.10.2004 14:55,
пустое
)
да нету нету...я про то что ты любитель без скобок писать...а xor ты своим выражением не получишь...вон я там ниже привел как надо
—
ы
(23.10.2004 14:56,
пустое
)
МЛИН почему я не получу ХОR ?
—
DASM
(23.10.2004 14:58,
пустое
)
а скобки убрал, чтобы Виноградова не пугать
—
DASM
(23.10.2004 14:59,
пустое
)
беру свои слова взад...получишь...но нагромоздил то как!:))))))
—
ы
(23.10.2004 14:58,
пустое
)
у тебя сдвиг переменной на переменное кол-во бит. У меня сдвигается единица, для процев с битовым процессором возможна более глубокая фаза оптимизации. Кстати 3 звездочки и 5 -ять на вкус почти одно и тоже. Вот бодяга то :-(
—
DASM
(23.10.2004 15:01,
пустое
)
во как надо result = ((var1 >> i ? 1 : 0 ) ^ (var2 >> j ? 1 : 0 )) & 1;
—
ы
(23.10.2004 14:49,
пустое
)
короче, никаки ? не надо....надо так result = ((var1 >> i ) ^ (var2 >> j )) & 1; проще пареной репы...DASM всю мыслю сбил своими умными идеями)))
—
ы
(23.10.2004 14:51,
пустое
)
да уж такой родился :-) твой вариант для некоторых типов процессоров может быть сложнее для оптимизатора
—
DASM
(23.10.2004 14:57,
пустое
)
ну ка давай проверим...на AVR? :)
—
ы
(23.10.2004 14:59,
пустое
)
согласен...если у проца нет баррель шифтера то туго будет...но твою запись хрен поймешь :- P
—
ы
(23.10.2004 15:01,
пустое
)
зато офигенная оптимизация и нехрен мои сурцы всяким понимать :-)
—
DASM
(23.10.2004 15:03,
пустое
)
ну вот я засунул это все в IAR 3/10 для AVR при макс оптим по size что то меня сомнения гложат
—
ы
(23.10.2004 15:13, 3139 байт)
а вот по SPEED один хрен
—
ы
(23.10.2004 15:15, 3127 байт)
правда я переменный все volatile объявил:))))))))) ладно...дальше лениво...
—
ы
(23.10.2004 15:24,
пустое
)
если конечно i and j не const
—
DASM
(23.10.2004 14:30,
пустое
)
i и j - постоянные. Объясните, плиз, что означает знак вопроса и все, что после него, до закрытия скобки ?
—
Виноградов Алексей
(23.10.2004 14:48,
пустое
)
Да, i не равно j !
—
Виноградов Алексей
(23.10.2004 14:49,
пустое
)
я и написал для общего случая. ? - единственный тернарный оператор.
—
DASM
(23.10.2004 14:54, 163 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru