Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как поменять нибблы в байте местами
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
sergeus
Здравствуйте.
Есть переменная unsigned char temp; , необходимо "перевернуть" этот байт (поменять местами нибблы)
Может есть какая команда? Просто не хочется вводить новые переменные.
Спасибо.
lks
Цитата(sergeus @ Feb 23 2008, 14:10) *
необходимо "перевернуть" этот байт (поменять местами нибблы)


Ниббл это 4 бита?
Перевернуть это зеркально 0-7, 1-6 и т.д?
У вас там есть процедура типа union?
AHTOXA
Цитата(sergeus @ Feb 23 2008, 16:10) *
Здравствуйте.
Есть переменная unsigned char temp; , необходимо "перевернуть" этот байт (поменять местами нибблы)

Может так:
temp = (temp >>4) | (temp <<4); ? :-)
sergeus
Цитата(AHTOXA @ Feb 23 2008, 16:38) *
Может так:
temp = (temp >>4) | (temp <<4); ? :-)


Спасибо, я делал аналогично, только еще накладывал маску.
AHTOXA
Цитата(sergeus @ Feb 24 2008, 00:19) *
Спасибо, я делал аналогично, только еще накладывал маску.


Маска здесь вроде ни к чему.

А можно ещё вот так (winavr же?):

Код
__inline__ uint8_t swap(uint8_t a)
{
    __asm__ __volatile__
        ( "swap    %0"        "\n\t"
        : "=r" (a)
        );
  return a;
}


Проверил, работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.