BUTUN SONLI BUL OPERATORLARI.
long, int, short, char va byte - butun sonlar turlari uchun qo’shimcha operatorlar turi ajratilgan.Ular bilan alohida bitlarning holatini tekshirib turish mumkin.Jadvalda shunday operatorlar ko’rsatilgan.Arifmetik bitlar operatori har bir bit bilan mustaqil kattalikda ishlashi mumkin.
OPERATOR
|
NATIJA
|
OPERATOR
|
NATIJA
|
~
|
Bitli inkor
qilish (NOT)
|
|
|
&
|
Bitli va (AND)
|
&=
|
Bitli va (AND) o’zlashtirish bilan
|
|
|
Bitli yoki
(OR)
|
|=
|
Bitli yoki (OR) o’zlashtirish bilan
|
^
|
Bitli o’chirish
yoki (XOR)
|
^=
|
Bitli o’chirish yoki (XOR) o’zlashtirish bilan
|
>>
|
O’ngga yurmoq
|
>>=
|
O’ngga yurmoq o’zlashtirish bilan
|
>>>
|
Nollar bilan to’ldirilgan o’ngga yurish
|
>>>=
|
Nollar bilan to’ldirilgan o’ngga yurish o’zlashtirish bilan
|
<<
|
Chapga yurish
|
<<=
|
Chapga yurish o’zlashtirish bilan
|
MANIPULYAR BITLAR BILAN PROGRAMMALARGA MISOLLAR.
Pastda ko’rsatilgan jadvalda har bir bitdagi operatorning o’z operandlari kombinatsiyasida sodir bo’lishi mumkin bo’lgan ishtiroki ko’rsatilgan. Jadvaldan keyin keltirilgan misol bu operatorning Java tilidagi dasturda ishlatilishini ko’rsatadi.
А
|
B
|
OR
|
AND
|
XOR
|
NOT A
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
class Bitlogic {
public static void main(String args []) {
String binary[] = { "OOOO","0001","0010","0011","0100","0101",
"0110","0111", "1000","1001","1010","1011","1100","1101","1110","1111"}; int a = 3; // 0+2+1 или двоичное 0011
int b = 6; // 4+2+0 или двоичное 0110
int c = a | b;
int d = a & b;
int e = a ^ b;
int f = (~a & b) | (a & ~b);
int g = ~a & 0x0f;
System.out.println(" a = " + binary[a]);
System.out.println(" b = " + binary[b]);
System.out.println(" ab = " + binary[c]);
System.out.println(" a&b = " + binary[d]);
System.out.println(" a^b = " + binary[e]);
System.out.рrintln("~a&b|а^~Ь = " + binary[f]);
System.out.println(" ~a = " + binary[g]);
} }
Mana bu esa shu programmani natijasi hisoblanadi:
С: \> Java BitLogic
a = 0011
b = 0110
a | b = 0111
a & b = 0010
a ^ b = 0101
~a & b | a & ~b = 0101
~а = 1100
O’NGGA VA CHAPGA YO’NALISH.
<< operatori o’z bitlaridachapga yurishni ta’minlaydi.Bu holda chap razryaddagi bitlar bir qismi chegaradan chiqadi va yo’qoladi.Shundan keyin o’ng pozisiyalar nollar bilan to’ldiriladi.
>> operatori Java tilida o’ngga yo’nalishni bildiradi.U chap operandning bitlarini o’ng tomonga joylashtiradi.Chap operandning bitlari o’ngdagi so’zlari oxirigacha borsa o’z-o’zidan yo’qoladi.Siljish paytida o’ngdagi razriyadlar o’rnini avvalgi belgilar razriyadi egallaydi.Buni belgilar razriyadining kengaytirilishi deb aytiladi.
class HexByte {
static public void main(String args[]) {
charhex[]= {'0','1,'2','3','4','5','6','7','8','9','a','b','c','d','e','f};
byte b = (byte) 0xf1;
System.out.println(“b = 0x” + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]); } }
Pastda shu programmani natijasi ko’rsatilgan.
С:\> java HexByte
b = 0xf1
Do'stlaringiz bilan baham: |