как изменить требуемый разряд двоичного представления числа
Дано число 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.