Здравствуйте, Tosha, Вы писали:
T>Вопрос такой: T>Допустим F0=11111010 T>А вот как получить четыре бита, т.е 0000? T>Есть ли вообще операторы для таких действий?
T>И вообще, можноли ли определить где в байте 1, а где 0?
typedef unsigned char byte;
// инициализация байта
byte b(0xF7);
// получение старших четырех бит
byte hi = (0xF0 & b) >> 4;
// получение младших четырез бит
byte lo = (0x0F & b);
// номер бита (нумерация с 0)
byte n = 4;
// проверка того, что n-ый бит равен 1bool ok = b & (1 << bit);
Здравствуйте, Tosha, Вы писали:
T>Вопрос такой: T>Допустим F0=11111010 T>А вот как получить четыре бита, т.е 0000? T>Есть ли вообще операторы для таких действий?
T>И вообще, можноли ли определить где в байте 1, а где 0?
Может воспользоваться битовыми полями ?
union byte_t
{
unsigned char b;
struct bits_t
{
unsigned int b0 : 1;
unsigned int b1 : 1;
unsigned int b2 : 1;
unsigned int b3 : 1;
unsigned int b4 : 1;
unsigned int b5 : 1;
unsigned int b6 : 1;
unsigned int b7 : 1;
};
struct bits_t bits;
};
Здравствуйте, _nn_, Вы писали:
__>Может воспользоваться битовыми полями ?
Мне не понятно, почему и зачем члены структуры unsigned int.
Можно записать так, с использованием unnamed structure:
Здравствуйте, Июнь, Вы писали:
И>Здравствуйте, _nn_, Вы писали:
__>>Может воспользоваться битовыми полями ? И>Мне не понятно, почему и зачем члены структуры unsigned int. И>Можно записать так, с использованием unnamed structure:
Можно так сделать.
Я ведь не привожу идеальный код, который подходит всем. И>
> ПК>Этот код компилироваться не обязан: стандарт подобного не разрешает. > > Хм... А по какой причине?
Вопрос в другом: а по какой причине он должен был бы это поддерживать? Впрочем, учитывая широкое фактическое распространение этой "фичи", она вполне может попасть в одну из будущих версий языка.
Posted via RSDN NNTP Server 1.9 alpha
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Вопрос в другом: а по какой причине он должен был бы это поддерживать? Впрочем, учитывая широкое фактическое распространение этой "фичи", она вполне может попасть в одну из будущих версий языка.
А почему тогда эта фича есть у Страуструпа в "Специальном издании"?
Здравствуйте, Tosha, Вы писали:
T>А если без инициализации? T>Допустим из порта считали байт, записали его в переменную read типа BYTE; T>А дальше?
АШ>>
АШ>>// получение старших четырех бит
АШ>>byte hi = (0xF0 & b) >> 4;
АШ>>
T>Как тут быть? T>Может так: BYTE hi=read>>4;?
Посмотри как определены макросы
HIBYTE, LOBYTE, HIWORD, MAKEWORD и т.д.
Просто и доступно.
...А отсюда наливаем, когда рецепт написан совсем неразборчиво...