ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
580446 Топик полностью
il-2 (18.02.2015 16:18, просмотров: 82) ответил Звероящер на А вот не подскажут ли уважаемые доны, как на сях сделать сдвиг двух чаров так, чтобы младший бит одного чара переходил в старший другого? На асме всё просто, делаешь сдвиг через флаг переноса и его оттудова выдвигаешь, а вот на сях ничего в голову
Плохой способ, есть зависимость от endianless процессора. Твой пример - для BIG_ENDIAN!!!. Правильно - использовать 2-байтовую переменную. А для доступа к отдельным байтам использовать такие выражения:  uint16_t var; var = (var & 0xFF) | (hibyte << 8); // Присваивание старшего байта var = (var & 0xFFFF) | lobyte; // Присваивание младшего байта hibyte = var >> 8; // Извлечение старшего бйта lobyte = (uint8_t)var; // Извлечение младшего байта Выражения можно оформить в виде макросов. Главное - не будет проблем с endianless и с оптимизацией будет тоже все хорошо!!!