freeCodeCamp/guide/russian/java/basic-operations/bitwise-operators/index.md

61 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: bitwise operator example
localeTitle: пример побитового оператора
---
# Побитовые операторы
## Таблица истины
![truth table](https://4.bp.blogspot.com/-0KPDI41veH0/V-OtObm_UWI/AAAAAAAAAso/CkTS0zUMGKIjlE3gUD0fMhmp-B0zcfBmACLcB/s1600/Bitwise-truthtable-Javaform.jpg "таблица истинности")
Побитовые операторы аналогичны логическим операторам, за исключением того, что они работают в меньшем масштабе - двоичные представления данных. Любые данные могут быть преобразованы в бинарный эквивалент. Хотя двоичные операторы работают на двоичном уровне, но они работают только между нормальными десятичными значениями.
## Типы побитовых операторов
### Побитовое ИЛИ
Побитовое ИЛИ является двоичным оператором (работает с двумя операндами). Это обозначается |. | оператор сравнивает соответствующие биты двух операндов. Если любой из бит равен 1, он дает 1. Если нет, он дает 0.
### Побитовое И
Побитовое И является двоичным оператором (работает с двумя операндами). Это обозначается символом &. Оператор & сравнивает соответствующие биты двух операндов. Если оба бита равны 1, он дает 1. Если один из битов не равен 1, он дает 0.
### Побитовое дополнение
Побитовое дополнение является унарным оператором (работает только с одним операндом). Он обозначается через ~. Оператор ~ инвертирует бит-шаблон. Он составляет от 0 до 1 и от 1 до 0.
### Побитовое XOR
Побитовое XOR является двоичным оператором (работает с двумя операндами). Это обозначается через ^. Оператор ^ сравнивает соответствующие биты двух операндов. Если соответствующие биты отличаются друг от друга, это дает 1. Если соответствующие биты одинаковы, он дает 0.
### Сдвиг влево
Оператор сдвига влево << сдвигает бит влево на определенное количество заданных бит, а нулевые биты сдвигаются в позиции низкого порядка.
### Правый сдвиг
Оператор правого сдвига >> сдвигает битовый шаблон вправо на определенное количество указанных битов. Если число является номером, дополненным дополнением 2, бит знака смещается в позиции высокого порядка.
### Беззнаковый правый сдвиг
Беззнаковый оператор сдвига вправо >>> сдвигает ноль в крайнее левое положение.
### Пример побитовых операторов:
```java
int a = 60; /* 60 = 0011 1100 represents 60 in binary*/
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
c = a | b; /* 61 = 0011 1101 */
c = a ^ b; /* 49 = 0011 0001 */
c = ~a; /*-61 = 1100 0011 :Invert all bits */
// shift operators : zeros are shifted in to replace the discarded bits
c = a << 2; /* 240 = 1111 0000 : Shift left 2 bits*/
c = a >> 2; /* 15 = 1111 */
c = a >>> 2; /* 15 = 0000 1111 : Zero fill right shift*/
```
**ДЛЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ:** [Нажмите здесь](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html)