Побитовые операции - C (СИ) (69706)
Формулировка задачи:
Даны два целых положительных числа А и В.:
1. Определить значение каждого бита числа А.
2. Обнулить все четные биты числа А.
3. Выполнить проверку заданного (вводится с клавиатуры) бита числа В и если заданный бит имеет значение «ЛОЖЬ», т.е. равен 0, установить его.
Переменные А и B должны иметь тип unsigned int.
Исходные данные и результат вывести в десятичной, шестнадцатеричной системах счисления и в виде двоичного числа.
Хелп плиз
Решение задачи: «Побитовые операции»
textual
Листинг программы
1.
int WhatBit(unsigned A, int n) // Биты нумеруются с младшего, с 0
{
return((A>>n)&1);
}
2.
unsigned int ObNul(unsigned int A)
{ unsigned int T = 0, i;
for(i=1; i<8*sizeof(int); i+=2)
T |= (1<<i);
return T&A;
}
Объяснение кода листинга программы
- Функция
WhatBitпринимает два аргумента:unsigned Aиint n. Значениеnиспользуется как смещение, определяющее, какой бит в числеAнужно проверить. Функция возвращает значение этого бита, но сдвинутого вправо наnпозиций. - Функция
ObNulпринимает один аргумент:unsigned int A. Она инициализирует переменнуюTзначением 0 и затем проходит по всем битам числаA, начиная со второго бита (для которого индекс нечетный). Для каждого бита функция добавляет вTсоответствующий бит с четным индексом (поскольку индексация в C начинается с 0). В конце функция возвращает значениеT, сдвинутое вправо наnпозиций, гдеnравно размеруintв байтах, умноженному на 2 (поскольку вintобычно 4 байта, то есть 8 позиций, и сдвиг на 2 позиции вправо дает тот же результат, что и сдвиг на 1 позицию влево). - Оба этих фрагмента кода используются для работы с битами чисел, но в разных контекстах. Функция
WhatBitможет быть использована, например, для проверки, установлен ли определенный бит в числе, а функцияObNulможет быть использована, например, дляобнуленияопределенных битов в числе.