Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Вот как надо из двух целых максимум вычислять. :-) Ни одного условного перехода. Все переменные int. rez = x1 ^ ((x1 ^ x2) & -(x1 < x2));
Отправлено
VasilyS
(80.92.96.25)
19 июня 2010, г. 17:08
Составить ответ
|
Вернуться на конференцию
Ответы
Будут ли переходы или нет - зависит от проца и компилятора, а не от того, как напишешь..
-
провинцыалекс
(19.06.2010, 17:12:39
81.25.57.242
,
пустое
)
Увы, это правда. Это мне приятель прислал, соврал мерзавиц, я не проверил хотел выпендриться и облажался :-(
-
VasilyS
(19.06.2010, 17:16:30
80.92.96.25
,
пустое
)
И не такое пробовалось. Компиляторы теперь с "партийной начинкой" против всяких, там...заумственных выкрутасов. :)
-
Макаров
(19.06.2010, 17:31:35
95.107.70.18
,
пустое
)
Ладно, жидко сходил, но вот уважаемым донам более достойное >>
-
VasilyS
(19.06.2010, 17:28:0
80.92.96.25
, 414 байт)
Ужас %(). Подразумевается, что flag 16 разрядный и принимает значения 0 и 0xFFFF, что не соответствует стандарту СИ (0=ЛОЖЬ, ДРУГОЕ=ИСТИНА)
-
mandigit
(19.06.2010, 20:47:35
91.79.39.182
,
пустое
)
У меня bool как unsigned char.
-
VasilyS
(19.06.2010, 21:56:4
80.92.96.25
,
пустое
)
О том и говорю
-
mandigit
(19.06.2010, 23:00:49
91.79.39.182
, 231 байт)
Не понимаю почему вы уделили такое внимание bool. Я показал принцип БЕЗПЕРЕХОДНОГО выполнения. В реальной программе flag может быть переменной ЛЮБОГО ВАШЕГО типа. Пусть uint, пусть uchar... Любая, могущая принимать значения 0 и ~0. В конце концов тип bool в классическом Си не определен (только С99), это же хрестоматийный пример. Так что все в ваших умелых руках. Главное - отсутствие условных переходов.
-
VasilyS
(19.06.2010, 23:21:13
80.92.96.25
,
пустое
)
можно проще сделать
-
mandigit
(20.06.2010, 00:23:42
91.79.39.182
, 401 байт)
Где же проще? Две операции сдвига на bp. Ведь величина bp необязательно известно компилятору заранее :-)
-
VasilyS
(20.06.2010, 00:44:6
80.92.96.25
,
пустое
)
Один хуй. Оптимайзер иара все раскручивает практически одинаково.
-
AZ
(19.06.2010, 20:39:28
92.112.114.158
,
пустое
)
Одинаково? У меня по разному. Второй вариант без условных переходов.
-
VasilyS
(19.06.2010, 21:54:57
80.92.96.25
,
пустое
)
Иногда все отдашь за линейный код. Branch - смерть.
-
VasilyS
(19.06.2010, 22:05:4
80.92.96.25
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru