Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Поразрядная операция И Objective-C

0

Также два байта можно объединить поразрядной операцией И для создания третьего байта. В  этом случае  бит третьего  байта равен  1 только  в том  случае, если  оба соответствующих бита первых двух байтов равны 1.

Рис. 33.4. Объединение двух байтов поразрядной операцией И

Поразрядная  операция  И выполняется  оператором  &.  Включите  в  main.c

следующие строки:

#include <stdio.h>

int main (int argc, const char * argv[])

{

unsigned char a = 0x3c; unsigned char b = 0xa9; unsigned char c = a | b;

printf("Hex: %x | %x = %x\n", a, b, c); printf("Decimal: %d | %d = %d\n", a, b, c); unsigned char d = a & b;

printf("Hex: %x & %x = %x\n", a, b, d); printf("Decimal: %d & %d = %d\n", a, b, d);

return 0;

}

Программа выдает результат объединения двух байтов поразрядной операцией

И:

Hex: 3c & a9 = 28 Decimal: 60 & 169 = 40

В Objective-C поразрядная операция И используется для проверки состояния конкретного бита (или флага). Например, при получении экземпляра NSDataDetector вы можете проверить, включен ли для него поиск телефонных номеров:

if ([currentDetector checkingTypes] & NSTextCheckingTypePhoneNumber) { NSLog(@"This one is looking for phone numbers");

}

Метод checkingTypes возвращает целое число, которое является результатом объединения поразрядной операцией ИЛИ всех флагов, установленных в данном экземпляре NSDataDetector. Число объединяется поразрядной операцией И с конкретной константой NSTextCheckingType, после чего проверяется результат. Если

бит, установленный в NSTextCheckingTypePhoneNumber, не установлен в настройках NSDataDetector, результат поразрядной операции И будет состоять из одних нулей. В противном случае результат будет отличен от нуля, а вы знаете, что NSDataDetector ищет в тексте телефонные номера.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии