Для начала необходимо рассказать оформате представления чисел вкомпьютере.
Мы внашей жизни привыкли кдесятичному представлению чисел: 56,777, 10957 ит.д. Десятичное представление числа 10957означает, что 10957= 1104+0103+9102+5101+7100. Иными словами десятичное число это a0*100+a1*101+a2*102+
+an*10n. Т.е. сумма произведений соответствующей цифры (ai) насоответствующую степень числа 10(10i).
В компьютере внутренний формат представления чисел двоичный. Вдвоичном формате все числа состоят изнулей иединиц, авкачестве множителя используется нечисло 10,возведенное встепень, асоответствующая степень числа 2.Например, двоичное число 10001101равно десятичному (обычному) числу 127+026+025+024+123+122+021+120= 128+0+0+0+8+4+0+1= 141.
Каждая такая двоичная цифра (1или 0)называется битом.
Теперь мызнаем достаточно, чтобы рассмотрить побитовые операции.
Побитовые операции
Дополнение доединицы. Вкаждом разряде единица заменяется нулем, ануль единицей. Пример:
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
b = ~b; // переменная b стала равна 01110010, т.е. 114
Сдвиг вправо. Двоичное представление первого операнда сдвигается вправо наколичество разрядов, равное значению второго операнда. Освобождающиеся левые разряды будут заполняться нулями. Пример:
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
b = b >> 2; // переменная b стала равна 00100011, т.е. 67
Сдвиг влево. Двоичное представление первого операнда сдвигается влево наколичество разрядов, равное значению второго операнда. Появившиеся правые разряды будут заполняться нулями. Пример:
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
b = b << 2; // переменная b стала равна 1000110100, т.е. 564
Побитовая операция И. Результат будет содержать единицу втех разрядах, где соответствующие разряды первого ивторого операнда содержат единицу. Вдругих случаях соответствующий бит результата будет равен 0.Пример:
int a = 25; // начальное значение переменной a равно 25,
// что в двоичном представлении равно 00011001
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
a = a & b; // переменная a стала равна 00001001, т.е. 9
Побитовая операция ИЛИ. Результат будет содержать ноль втех разрядах, где соответствующие разряды первого ивторого операнда содержат ноль. Вдругих случаях соответствующий бит результата будет равен 1.Пример:
int a = 25; // начальное значение переменной a равно 25,
// что в двоичном представлении равно 00011001
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
a = a | b; // переменная a стала равна 10011101, т.е. 157
Побитовая операция исключающее ИЛИ. Значение результирующего выражения будет содержать 1втех разрядах, вкоторых xиyимеют разные двоичные значения, и0 вовсех остальных разрядах. Пример:
int a = 25; // начальное значение переменной a равно 25,
// что в двоичном представлении равно 00011001
int b = 141; // начальное значение переменной b равно 141,
// что в двоичном представлении равно 10001101
a = a ^ b; // переменная a стала равна 10010100, т.е. 148
Перейти к главе «
Условный оператор».