Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> первые 3 бита байта равны 110? 
:(
    Опции темы
GQU
Дата 16.11.2015, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Как определить, первые 3 бита байта равны 110 или нет?

PM MAIL   Вверх
konshyn
Дата 16.11.2015, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 19.9.2013

Репутация: нет
Всего: нет



Младшие, можно, например так:
if (x % 8 == 0b110) {
...
}

старшие, если это переменная именно 1 байт, то так:
if (x >> 5 == 0b110) {
...
}





--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Sajtran
Дата 17.11.2015, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 15.10.2008
Где: Мегион

Репутация: нет
Всего: 2



Код

if ((x & 0b110) == 0b110) {
...
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
math64
Дата 17.11.2015, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(konshyn @  16.11.2015,  18:45 Найти цитируемый пост)
старшие, если это переменная именно 1 байт, то так:
Код

if (x >> 5 == 0b110) {
...
}

Но можно обойтись и без >>:
Код

if ( (x & 0xE0) = 0xC0) { ... }



Это сообщение отредактировал(а) math64 - 17.11.2015, 13:53
PM   Вверх
konshyn
Дата 17.11.2015, 14:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 19.9.2013

Репутация: нет
Всего: нет



Цитата(Sajtran @  17.11.2015,  11:29 Найти цитируемый пост)
    
Код

if ((x & 0b110) == 0b110) {
...
}

Не подойдет. Контр-пример: 0b00000111


Цитата(math64 @  17.11.2015,  12:49 Найти цитируемый пост)
Оператор >> имеет больший приоритет, чем ==, поэтому нужно ставить скобки.

Все верное, оператор >> имеет больший приоритет. Поэтому он сначала сдвигает вправо на 5 бит, а потом сравнивает. После сдвига будет 0b00000xxx. Скобки необязательны, но можно и поставить, если очень хочется.

Цитата(math64 @  17.11.2015,  12:49 Найти цитируемый пост)
Но можно обойтись и без него:
Код

if ( (x & 0xE0) = 0xC0) { ... }

наверное, имелось в виду ==




--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Sajtran
Дата 18.11.2015, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 15.10.2008
Где: Мегион

Репутация: нет
Всего: 2



точно, ступил, маску по значимым битам и сравнивать желаемое

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.