![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Необходимо написать функцию, которая меняет порядок битов в целом числе без знака на обратный.
Вот кое-что написал, посоветуйте как можно улучшить функцию reverseBits.
|
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Soah |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
|
|||
|
||||
Леопольд |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Это тоже самое что и x = ~x Т.е. не то. Не думаю что можно так просто сделать. Наверное, всё же, придётся в цикле.
По моему, так попроще выглядит ![]() Это сообщение отредактировал(а) Леопольд - 13.7.2009, 20:51 -------------------- вопросов больше чем ответов |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Меня устраивает полностью. Но для универа не подойдёт. Я бы шаблон написал... ![]() -------------------- вопросов больше чем ответов |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
(для x86-32) Добавлено через 9 минут и 48 секунд ого! нафига делать за "3-4" операции если там деление и умножение %) както это нежизнеспособно ниразу Это сообщение отредактировал(а) GoldFinch - 13.7.2009, 20:53 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
я тоже сначала только 1 заметил
|
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Я видел два. Но суть не в этом. Была просьба "подправить" уже написанную функцию, что я и сделал... На первый взгляд "Reverse bits the obvious way" самый простой. Но он уже оптимизирован, причём несколькими людьми, в течении нескольких лет... ![]() Это сообщение отредактировал(а) Леопольд - 13.7.2009, 21:34 -------------------- вопросов больше чем ответов |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Ты забыл добавить: x86-32-MSC++(=> Win32 only) Не более, чем у тебя ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
W4FhLF, с точки зрения наглядности, цикл лучше всего,
с точки зрения быстродействия мой вариант лучше их умножения. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Ну во-первых твой вариант можно переписать без потери переносимости. А во-вторых, я думаю когда ты его писал, то занимался premature optimization. Есть измерения, на каких объёмах эта оптимизация становится оправдана для среднестатистических десктопов? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
W4FhLF, я что в голову пришло, то и написал, никакой оптимизации.
правда я было думал что в MSVC есть интринсик __bswap(), а оказалось его нет. Добавлено через 4 минуты и 11 секунд а то что по сравнению с циклом это premature optimization - не факт. это чистая функция с вполне понятным названием и прототипом. то как она реализована - никак не влияет на код где она используется. время на ее написание - примерно такое же как и на написание цикла (если понимаешь что делаешь) читается легко (если понимаешь что делают сдвиги и маски) |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
солидарен с GoldFinch - никакой преждевременной оптимизации (__bswap не расматриваем) тут нет, просто реализация иного алгоритма, функция изначально преднаначена для реализации некой двоичной логики, и для программиста с точки зрения временных затрат, если он нормально ориентируется в двоичной с.с.,такой вариант, ничуть не сложней циклического подхода. ![]() P.S. только вместо inta все ж лучше использовать unsigned. (будем считать что опечатка ![]() Это сообщение отредактировал(а) mes - 14.7.2009, 13:52 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |