Название: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Примерный ученик от Июль 10, 2013, 20:23 Есть такое? ???
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Bepec от Июль 10, 2013, 20:34 qToBigEndian
qToLittleEndian Пользуйтесь на здоровье. Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Old от Июль 10, 2013, 20:55 Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Bepec от Июль 10, 2013, 20:57 Извиняйте. Чуток ошибся, бывает :) Тогда незнаю, разве что операциями сдвига ;)
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Примерный ученик от Июль 10, 2013, 21:36 Похоже придется самому рисовать ;D
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Old от Июль 10, 2013, 21:38 Да вот как-то так можно сделать:
Код
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: kambala от Июль 10, 2013, 21:48 или так:
Код
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Old от Июль 12, 2013, 09:37 Сделал универсальной:
Код
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Alex03 от Июль 26, 2013, 21:02 для байта
x = ((x >> 1) & 0x55) | ((x<<1) & 0xAA); x = ((x >> 2) & 0x33) | ((x<<2) & 0xCC); x = ((x >> 4) & 0x0F) | ((x<<4) & 0xF0); Для 16 и 32 бит соответственно ешё 1 и 2 строчки. x беззнаковый. плюсы - нет ветвлений. Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Akon от Июль 27, 2013, 02:17 Один из тех редких случаев, когда asm рулит: ведь компилятор не врубит, что делает ваш С++ код, соответственно, оптимизация проиграет asm-варианту.
Код: asm { 2Alex03: не знал такой вариант, спасибо. Тут по-ходу можно задать произвольный паттерн размещения. Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Fat-Zer от Июль 27, 2013, 06:53 если уж говорить о скорости, то это делается так: генерится таблица из 256-ти байт (любым способом) и по ней просто возвращается индекс.... ;)
Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Old от Июль 27, 2013, 06:59 если уж говорить о скорости, то это делается так: генерится таблица из 256-ти байт (любым способом) и по ней просто возвращается индекс.... ;) Лучше так сформулировать: Возвращается значение из таблицы, а исходный байт выступает в качестве индекса. :)Название: Re: функция разворота байта:младшие и старшие разряды поменять местами Отправлено: Akon от Июль 28, 2013, 08:51 Цитировать Возвращается значение из таблицы, а исходный байт выступает в качестве индекса. Да, это табличная оптимизация. |