Пример побитовых операций
Пример.
Битовое представление беззнакового целого числа 0 <= п <= 255.
#include <stdio.h>
void main()
{ extern void _bits(unsigned sp);
unsigned val;
printf("Введите целое беззнаковое число n "); scanf("%u",&val);
if (val>=0) _bits(val); }
void _bits(unsigned sp)
{const int max=7; int i;
printf("\n Битовое представление для %u",sp);
for (i=max;i>=0; i--)
printf("%d", sp>>i&l);
}
Другим способом работы с разрядами является использование битовых полей. Полем считается последовательность соседних битов (разрядов) в числе типа int или unsigned int. Битовые поля устанавливаются с помощью структуры. Как правило, битовые поля располагаются от меньших номеров к большим.
Пример:
#include <stdio.h>
typedef struct {unsigned i: 1;
unsigned j:l;
unsigned k: 1;
}bit_l;
void main()
{bit_l my_val;
... my_val.i=l; my_val.j = 0;....}
В структуре примера устанавливаются три одноразрядных поля, т.е. в переменной my_val типа int используются только три первых разряда, причем одноразрядным элементам структуры присваиваются значения 0 или 1.
Поле битовой структуры может не иметь имени, например, unsigned :3;. Если общее число объявленных битов превысит размер переменной int, то используется следующая ячейка int. Одиночное поле не может перекрыть границу между двумя int. Компилятор автоматически сдвигает перекрывающее поле на следующую ячейку int, при этом в первом int остается безымянное место.
Комментарии (0)