Правильна ли моя маскировка

Что это значит

if ((readParameter - > type(0) & 0xff) == 0xff) {}

Я знаю, когда мы будем&’с oxff, то он возвращает LSB. Но что это значит, оценивая его снова с == 0xff?

Я чувствую что-то вроде этого (например):

 if ((00000000 00000000 00000000 11011001 & 00000000 00000000 00000000 11111111) == 00000000 00000000 00000000 11111111)
{
//IF THEY ARE EQUAL IT ENTERS IN THE LOOP ? IN THIS CASE THEY ARE  NOT EQUAL
}

Пожалуйста поправьте меня
если я не прав?

0

Решение

Но что это значит, оценивая его снова с == 0xff?

этот if проверяет, равен ли младший байт 0xff. Остальное что readParameter->type(0) возврат может содержать другие установленные биты. Если они не были удалены с & 0xff тогда равенство 0xff никогда не может быть истинным.

Я знаю, когда мы будем&с чем-то, то он возвращает LSB.

это не так, когда вы используете двоичное двоичное И, тогда результат зависит от аргументов, используемых в операции. если ты & с 0xff вы получите младший байт, но если вы это сделаете (ui32value & 0xff000000) >> 24 тогда вы будете читать самый старший байт.

2

Другие решения

Результат операции фильтрации ( & 0xff ) сравнивается с самой маской, чтобы проверить, равны ли все последние 8 битов параметра 1

0

По вопросам рекламы [email protected]