Поразрядные операции

Последнее обновление: 17.01.2024
Упражнение 1

Напишите программу, которая меняет 1-й и 2-й биты числа. Например, число 13 в двоичной системе равно 0b01101. В результате надо получить 0b01011 или число 11 в десятичной системе. Отсчет битов идет справа налево (от младших разрядов к старшим) начиная с нуля.

Ответ
#include <stdio.h>
 
int main(void)
{
    unsigned char data = 0b1101; // число 13  
    // получим 1-й бит
    unsigned char bit_1 = (data >> 1) & 1;
    // получим 2-й бит
    unsigned char bit_2 = (data >> 2) & 1;
    // получаем результат операции XOR для обоих битов bit_1 и bit_2
    unsigned char xor_of_bit = bit_1 ^ bit_2;
    unsigned char result = data ^ (xor_of_bit << 1 | xor_of_bit << 2);
    printf("Result: %d", result);
    return 0;
}
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850