Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

:) А что? Коротенькая функция проверки на различие байтов (+)

Отправлено Quasy 23 сентября 2008 г. 14:27
В ответ на: В среде программистов ходят такие головоломки. отправлено Oldring 23 сентября 2008 г. 13:53

не более чем одним битом - думаю, многим пригодится. Особливо когда считывание с внешних устройств происходит и надо решение принять. Чтоб не было непонимания ее работы, поясню:
unsigned char Check_Mask( unsigned char a, unsigned char b )
{
a = (a ^ b); // сделал XOR - все различия выперли наружу.

// Мне надо чтоб после XORа был не более одного бита разницы, т.е.
// чтобы стояло не более одного "единичного" бита.
// Это значит, надо проверить, является ли число степенью двойки:
// if( n & (n-1) == 0) // ...степень двойки...
// Про степень двойки нарыл что-то вроде "Трюкибляманипуляциисбитами"

return( a &= ((unsigned char)(a - 1)) );

}/*Check_Mask*/


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите двойку на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru