Java dasturlash tilida operatorlar Java dasturlash tilida solishtirish operatorlari


Download 45.61 Kb.
bet2/5
Sana28.03.2023
Hajmi45.61 Kb.
#1303153
1   2   3   4   5
Bog'liq
3 - Ma\'ruza mashg\'uloti - 2023-03-14T105535.792

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
BELGISIZ O’NGGA SILJISH.
Ko’pincha o’ngga siljishda belgilar razriyadining kengaytirilishiga yo’l qo’ymasdan chapdagi razriyadlar bo’shatilib o’rni nollar bilan to’ldirilishi talab etiladi.
class ByteUShift {
static public void main(String args[]) {
char hex[] ={'0','1’,'2','3','4','5','6','7','8','9','а','b','с','d','e','f’};
byte b = (byte) 0xf1;
byte c = (byte) (b >> 4);
byte d = (byte) (b >> 4);
byte e = (byte) ((b & 0xff) >> 4);
System.out.println(" b = 0x" + hex(b >> 4) & 0x0f] + hex[b & 0x0f]); System.out.println(“ b >> 4 = 0x" + hex[(c >> 4) & 0x0f] + hex[c & 0x0f]); System.out.println(“b >>> 4 = 0x" + hex[(d >> 4) & 0x0f] + hex[d & 0x0f]); System.out.println(“(b&0xff)>>4=0x" + hex[(e >> 4) & 0x0f] + hex[e & 0x0f]);
} }
Bu misol uchun b o’zgaruvchili erkin musbat sonni ko’rsatish mumkin,bunda biz 0xfl o’n oltilik sondan foydalandik.O’zgaruvchi natijada b belgili harakat bilan o’zlashtiriladi to’rt razryad o’ngga. Kutilganidek belgili razryadning kengayishi 0xfl ni 0xFF ga oylantirilishiga olib keladi.So’ngra d o’zgaruvchi belgisiz b harakatini to’rt razryad o’ngga suradi.d natijasida 0xof natijasida yana 0xff ni olishimizni ham kiritish mumkin.Bu – belgili razryadni kengayishi natijasi b o’zgarganda ,avtomatik bajarilganda int o’ngga harakatlanish oldidan bajariladi. Natijada e o’zgaruvchisi uchun kerakli natijaga erishishimiz mumkin – ahamiyat 0xof.Buning uchun o’ngga harakatlanishdan oldin b o’zgaruvchini og’zaki ko’paytirish 0xff maskasiga kerak.
Bunday yo’l bilan tozalash katta razryadlarni avtomatik ko’paytirish tipi bajariladi.
Buning natijasida belgisiz o’ngga harakat qilishga zarurat qolmaydi,chunki biz belgili bitning AND operasiyasidan keyingi holatni bilamiz.
С: \> java ByteUShift
b = 0xf1
b >> 4 = 0xff
b >>> 4 = 0xff
b & 0xff) >> 4 = 0x0f

Download 45.61 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling