как изменить требуемый разряд двоичного представления числа

Дано число 1 байт, без знака. Написать функцию типа void, позволяющую вывести информацию об 2 разряде двоичного представления введенного числа и инвертировать его (установить, если был сброшен, и сбросить, если был установлен).

Я понял как вывести число в двоичном представлении. Как же мне теперь изменить 2 разряд числа?


void out(unsigned char* num)
{
    for (int i = 7; i >= 0; i--)
    {
        if (*num & (1 << i))
        {
            printf("1");
        }
        else
        {
            printf("0");
        }
    }

}

int main()
{
    unsigned char num=17;
    out(&num);
}

Ответы (1 шт):

Автор решения: Harry
void out2(unsigned char c)
{
    putchar(c&0x02 ? '1' : '0');
}

unsigned char inv2(unsigned char c)
{
    return c^0x02;
}

Если разряды считать от младшего, и младший считать первым...

На всякий случай - 0x02 не потому 2, что второй разряд, а потому, что это число из всех нулевых разрядов, кроме второго... Для третьего было бы 0x04.

→ Ссылка