![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Самый быстрый подсчет кол-ва бит в байте?
Самый быстрый способ определить четное или нечетное кол-во бит в байте? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
существуют тетрады, байты, слова, двойные слова, квадро слова. но мне не известны архитектуры, на которых байт не равен 8ми битам.
|
|||
|
||||
| ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Добавлено через 1 минуту и 21 секунду semibug, самый быстрый:
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Возможно semibug имел в виду подсчет числа ненулевых битов? Тогда самый быстрый способ - таблица, всего то 256 чисел.
-------------------- ... |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
ksili, можно чуть-чуть быстрее
А если серьёзно, то так, только я не понял принципа, а тупо нагуглил тут athena.vvsu.ru/docs/c-java/bogatyrev_citforum/gl_1_4.htm
Это сообщение отредактировал(а) borisbn - 29.6.2010, 06:46 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
существуют процессоры на которых бит в байте не 8 насколько я знаю..... но как я понимаю количество бит в байте определяется архитектурой процессора, и, вероятно, умеет такие вещи делать automake (или подобная утилита) перед сборкой...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Возможно. Тогда ещё можно глянуть книгу Генри Уоррен-мл. "Алгоритмические трюки для программистов". Там есть оптимизированные алгоритмы для подсчёта ненулевых битов, которые будут работать и в бОльших ячейках (слова, двойные слова и т.д.) -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
a можно чуть _правильней_, см. CHAR_BIT хотя тут явно тс |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
http://infolab.stanford.edu/~manku/bitcount/bitcount.html
http://stackoverflow.com/questions/109023/...-32-bit-integer http://forum.sources.ru/index.php?showtopic=250568&st=0 Собственная реализация подсчета количества установленных бит в байте, массив заполняется еще на этапе компиляции:
Это сообщение отредактировал(а) SABROG - 29.6.2010, 13:58 |
|||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Прошу прошения, вопрос некорректный. Действительно имел ввиду подсчет единичных бит в байте. Оптимизирую код для вычисления ECC (Error Correction Code) для данных, хранящихся на флэшке. Программа для работы на микроконтроллере с ограничениями на размер и быстродействие.
Табличный метод видится самым быстрым, хотя и отъедает 256 байт. Т.к. для задачи необходимо только определить четное/нечетное ли кол-во установленных байт, попробую сократить таблицу до 32-х байт, и использовать каждый бит. Что-то вроде:
Всем спасибо за советы. P.S. Когда подобрал название для функции вспомнил, что у процессора должен быть флаг четности, устанавливаемый после арифметических операций. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Для определения четного/нечетного количества единичных бит в байте не обязательно считать сами биты - достаточно сделать XOR всех битов.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| alexcustov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 11.6.2010 Где: Полацкае княства Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |