Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« : Апрель 05, 2008, 10:54:28 » |
|
В качестве подготовки к модулю по ООП пришлось проштудировать тему поразрядных операций, а именно область их применения (включение, выключение битов и т.п). Порыскал в инете, но нашел только часть того, что было нужно. Еще часть взял из книги. Короче, выкладываю здесь все что нашел и слепил воедино. Думаю это пригодиться 1-курсникам, таким же как и я. А именно ИУС-07, у которых это будет на модуле )))
Поразрядные логические операции
Четыре логических поразрядных операции работают с целочисленными данными, включая тип char. Название поразрядные связано с тем, что операции выполняются над каждым разрядом независимо от разрядов слева или справа. Не путайте их с обычны¬ми логическими операциями (&&, | | и !), которое управляют значениями в целом.
Дополнение до единицы или поразрядное отрицание: ~
Унарная операция - преобразовывает все единицы в нули и все нули в единицы, как показано в следующем примере:
~(10011010) //выражение (01100101) // результат
Предположим, переменной val типа unsigned char присвоено значение 2. В двоичном выражении оно имеет вид 00000010. Тогда выражению ~val будет соответствовать значение 11111101 или 253. Обратите внимание, что операция не изменяет значения переменной val подобно тому, как не изменяет значение val выражение 3*val. Оно по-прежнему равно 2. Вместо этого создается новое значение, которое может быть использовано в другом выражении либо присвоено другой переменной:
newval = ~val; printf("%d", ~val);
Чтобы значение val изменить на ~val, можно воспользоваться простым оператором присваивания:
val = ~val;
Поразрядная операция "И": &
Двоичная операция & создает новое значение за счет выполнения поразрядного сравнения двух операндов. Для каждой позиции результирующий разряд будет иметь значение 1 только в случае, когда соответствующие разряды обоих операндов имеют значение 1. (Применительно к логическим значениям можно сказать, что результат будет истинным только в случае, когда оба двоичных операнда имеют истинные зна¬чения.) Таким образом, в результате вычисления выражения:
(10010011) & (00111101)
получается следующее значение:
(00010001)
Такой результат обусловлен тем, что только нулевой и четвертый разряды обоих операндов имеют значение 1. В языке С также существует комбинированная операция "И"-присваивание: val &= 0377; дает тот же результат, что и следующее выражение: val=val & 0377;
Остальное кидаю фотками, здесь охватываються следующие темы:
1) Поразрядные операциия "ИЛИ |" и исключающее "ИЛИ ^". 2) Битовые маски и их область применения.
|