Увод у манипулацију битима

Обично програмер ради на променљивим типовима података као што су инт, флоат, доубле, Стринг или колекције попут Арраи, Лист, АрраиЛист и тако даље. У неким случајевима програмери морају ући много дубље у податке у бајту и на нивоу бита како би извукли и манипулирали подацима. Језици попут Јава и Ц # омогућавају вам да манипулирате подацима на нивоу бита, што значи да имате приступ одређеном биту у бајту. У овој теми ћемо сазнати о Манипулацији Бит-а на Јави.

Манипулација бита често је потребна када ради на Компресији података и Шифрирању података при чему програмер мора извући податке на нивоу бита како би кодирао, декодирао или компримирао оригиналне податке. Постоје многе друге апликације Бит манипулације које ћемо видети касније у овом чланку.

Јава подржава 3-битну промену и 4 битовна оператора за извођење операција на нивоу бита. Ови оператери се могу користити на интегралним типовима (инт, схорт, лонг и бите) за извођење операција на нивоу бита.

Јава Битвисе и Битсхифт Оператори

ОператорОпис
&Битвисе АНД
|Битвисе ИЛИ
~Битвисе Допуна
<<Лева смјена
>>Ригхт Схифт
^Битвисе КСОР
>>>Неподписана десна смена

Оператори Бит Манипулације на Јави

погледајмо операторе детаљније

1) Битно ИЛИ

Ово је бинарни оператор који узима 2 операнда и означен је симболом „| “. Оператор битиса упоређује одговарајуће битове двају операнда. Ако је било који од операндова бита 1, тада је излаз 1, ако не, биће 0.

Пример

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Јава Програм

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Излаз: 31

2) Битвисе АНД

Ово је такође и битни оператор који узима 2 операнда и означен је симболом "&". битовни оператер упоређује одговарајуће битове двају операнда. Ако су оба бода операнда 1, тада је излаз 1 у супротном 0.

Пример

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Јава Програм

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Излаз: 11

3) Битни комплемент

За разлику од друга два оператора о којима смо до сада говорили, овај има само један операнд и означен је симболом "~". Овај оператер инвертира бит операнда. Ако је бит операнда 0, онда га претвара у 1 и обрнуто.

Пример

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Јава Програм

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Излаз: -16

Напомена: када покренете програм Јава, добићете -16 као излаз уместо 240, јер преводилац приказује 2 комплемента тог броја, тј. Негативан појам бинарног броја.

2 комплемента било којег броја еквивалентна је - (н + 1) где је н број чије 2 комплемента треба израчунати. У нашем случају 2 комплемента операнда 15 је -16 што је и излаз програма.

4) Битор КСОР

Битвисе КСОР је бинарни оператор који узима 2 операнда и означава се симболом "^". овај оператор упоређује одговарајуће битове двају операнда. Ако су одговарајући битови двају операнда различити, он даје 1 као излаз остало 0.

Битвисе КСОР оператор је еквивалентан (Битвисе ОР + Битвисе Цомплемент)

Пример

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Јава Програм

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Излаз: 20

5) Потписана смјена улијево

Оператор померања у лево помера образац бита улево за одређени број пута наведених у операнду. Леви оператор померања означен је симболом „<<“.

Пример

123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)

Јава Програм

class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)

излаз: 246, 492, 984

6) Потписана десна смјена

Потписани оператор десне смене ради потпуно исто као и оператор леве смене само што додаје нула бита пребацује се у позицију високог реда.

Пример

123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)

Јава Програм

class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)

Излаз: 61, 30, 15

7) Неподписан десни помак

Оператор правог помака помиче нулу у крајњи лијеви положај за одређени број битова који су наведени у операнду.

Јава Програм

class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)

Излаз : 61, 30, 15

Закључак - Манипулација битима на Јави

Сада када смо дошли до краја чланка, завршимо са сумирањем кључне тачке о којој смо разговарали у овом чланку. Видели смо шта је мала манипулација и различити случајеви његове употребе. Такође смо научили различите типове битностраних оператора (Битвисе АНД, Битвисе ОР, Битвисе Цомплемент и Битвисе КСОР) и оператере помака у битима (Сигнед Лефт Схифт оператор, потписан Ригхт Схифт Оператор и непотписани Ригхт схифт оператери), уз пример и узорак Јава програм који објашњава поједине операторе.

Препоручени чланци

Ово је водич за манипулацију битима на Јави. Овдје детаљно расправљамо о Јава Битвисе и Битсхифт Операторима са примјерима и Јава програмима и њиховим излазима. Такође можете погледати следећи чланак да бисте сазнали више -

  1. Шта је Јава интерфејс?
  2. Јава Алатке
  3. Питхон Фрамеворкс
  4. Болови оператери на Јави

Категорија: