Возвратить 1, когда любой нечетный бит x равняется 1 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Напишите код, исполняющий следующую функцию: /* возвратить 1, когда любой нечетный бит x равняется 1, и 0 в противном случае. предположить размер целого w=32 */ int any_odd_one(unsigned x);

Решение задачи: «Возвратить 1, когда любой нечетный бит x равняется 1»

textual
Листинг программы
int any_odd_one(unsigned x) {
    return (x & 0x55555555u) != 0;
}

Объяснение кода листинга программы

В данном коде функция any_odd_one() принимает на вход однобайтовый двоичный код (представленный в виде числа) и возвращает 1, если хотя бы один нечетный бит этого числа равняется 1. Иначе функция возвращает 0. Алгоритм работы функции таков:

  1. Значение переменной x в двоичной системе представлено в виде 32-битной числа.
  2. При помощи операции побитового И (&) производится побитовое перемножение числа x и 0x55555555u (где 0x55555555 - это число, все биты которого, кроме последнего, равны 1).
  3. Результат операции сравнивается с 0. Если он не равен 0, то это значит, что хотя бы один нечетный бит числа x равен 1, и функция возвращает 1. Если результат равен 0, то все нечетные биты числа x равны 0, и функция возвращает 0.

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы