Назад к вопросам
Junior
97
questionbank
Какие побитовые операции ты знаешь?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
&(побитовое И): Сравнивает биты в каждой позиции и возвращает 1, если оба бита равны 1.|(побитовое ИЛИ): Сравнивает биты в каждой позиции и возвращает 1, если хотя бы один бит равен 1.^(побитовое исключающее ИЛИ (XOR)): Сравнивает биты в каждой позиции и возвращает 1, если биты разные.~(побитовое НЕ): Инвертирует каждый бит операнда.<<(левый сдвиг): Сдвигает биты операнда влево на указанное количество позиций. Освободившиеся правые биты заполняются нулями.>>(правый сдвиг с сохранением знака): Сдвигает биты операнда вправо на указанное количество позиций. Освободившиеся левые биты заполняются знаковым битом (0 для положительных, 1 для отрицательных).>>>(правый сдвиг без сохранения знака): Сдвигает биты операнда вправо на указанное количество позиций. Освободившиеся левые биты заполняются нулями.
Примеры:
// Побитовое И
int a = 5; // 0101 в двоичной
int b = 3; // 0011 в двоичной
int resultAnd = a & b; // 0001 (1 в десятичной)
// Побитовое ИЛИ
int resultOr = a | b; // 0111 (7 в десятичной)
// Побитовое XOR
int resultXor = a ^ b; // 0110 (6 в десятичной)
// Побитовое НЕ
int c = -15; // Пример для отрицательного числа, представление зависит от системы (дополнительный код)
int resultNot = ~c; // Инвертирует все биты
// Левый сдвиг
int d = 2; // 0010 в двоичной
int resultLeftShift = d << 2; // 1000 (8 в десятичной)
// Правый сдвиг с сохранением знака
int e = 10; // 1010 в двоичной
int resultRightShift = e >> 2; // 0010 (2 в десятичной)
int f = -10; // Пример для отрицательного числа
int resultSignedRightShift = f >> 2; // Результат зависит от представления
// Правый сдвиг без сохранения знака
int g = -10; // Пример для отрицательного числа
int resultUnsignedRightShift = g >>> 2; // Заполняет нулями слева, независимо от знака