61 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: bitwise operator example
							 | 
						|||
| 
								 | 
							
								localeTitle: пример побитового оператора
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								# Побитовые операторы
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Таблица истины
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Побитовые операторы аналогичны логическим операторам, за исключением того, что они работают в меньшем масштабе - двоичные представления данных. Любые данные могут быть преобразованы в бинарный эквивалент. Хотя двоичные операторы работают на двоичном уровне, но они работают только между нормальными десятичными значениями.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Типы побитовых операторов
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Побитовое ИЛИ
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Побитовое ИЛИ является двоичным оператором (работает с двумя операндами). Это обозначается |. | оператор сравнивает соответствующие биты двух операндов. Если любой из бит равен 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)
							 |