В C оператор &
выполняет побитовую операцию И. Другими словами, он проходит побитно через два числа и устанавливает соответствующий бит ответа равным 1, только если ОБА входных битов равны 1.
В двоичном формате число 1 равно 000 .... 00001, другими словами, он имеет только одну единицу в младшей битовой позиции. Итак, когда вы &
(И) с ним, все в ответе будет нулевым, за исключением, возможно, той самой младшей битовой позиции, которая будет равна 1, только если другой вход имеет 1 в этой позиции.
Кроме того, в вашей программе строка 007, вероятно, не делает то, что вы хотите. Похоже, вы сдвигаете value
на один бит вправо, но тогда вы не сохраняете результат сдвига. Возможно, вы хотите написать что-то вроде value = value >> 1
, чтобы оно действительно изменило переменную value
?