Назад к вопросам
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; // Заполняет нулями слева, независимо от знака