Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
не более чем одним битом - думаю, многим пригодится. Особливо когда считывание с внешних устройств происходит и надо решение принять. Чтоб не было непонимания ее работы, поясню:
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*/
Составить ответ | Вернуться на конференцию
Ответы