|
Отправлено Бендер++ 29 октября 2003 г. 11:48
В ответ на: Алгоритм подскажите: как определить, что два числа отличаются не более, чем на один бит. отправлено Сергей Борщ 29 октября 2003 г. 11:27
с = a ^ b;
if (c & (c-1)) плохо дело;
else OK;
Отправлено Буриданов осел 29 октября 2003 г. 11:56
В ответ на: ага, и посчитать кол-во "1", это уже общеизвестный алгоритм :О) отправлено Айрат 29 октября 2003 г. 11:37
Выражение C & (C-1) равно 0 если C степень двойки, т.е. имеет только один еденичный бит.
Т. е. сначала XOR:
C = A ^ B
После проверка, что в C еденичный бит только один
if ((C & (C-1)) == 0 ) ....
И еще, как сказал Baser, даже после того, как поймал преамбулу, ее надо искать во входном потоке, ибо в середине пакета может влезть другой (лучше слышимый) передатчик. Поэтому я от преамбулы и отказался.
E-mail: info@telesys.ru