0100 0000 0000 >> 8 => 0000 0000 0100 (Chunki u musbat son boʻlgani uchun, agar shunday boʻlmasa, 0 bilan almashtiriladi.belgi haqida qayg'uring, shunchaki imzosiz o'ngga siljish operatoridan foydalaning) - 0100 0000 0000 >> 8 => 0000 0000 0100 (Chunki u musbat son boʻlgani uchun, agar shunday boʻlmasa, 0 bilan almashtiriladi.belgi haqida qayg'uring, shunchaki imzosiz o'ngga siljish operatoridan foydalaning)
- Endi bizda 4 ga teng READ ruxsatnomalari mavjud.
- Endi, masalan, bizga RESURS uchun OʻQISH, YOZISH, ISHLAB CHIQISH ruxsatlari berilgan, nima qilishimiz mumkin ushbu RESOURCE uchun ruxsat bormi?
- Keling, avval ikkilik ruxsatlarga misol keltiraylik. (Hali ham 4 bitli sanoq tizimini qabul qilamiz)
- READ = 0001
- WRITE = 0100
EXECUTE = 0110 Agar biz shunchaki qilamiz deb o'ylasangiz: O'QING | YOZING | EXECUTE, siz biroz haqsiz, lekin aniq emas. Qarang, READ | ni bajarsak nima bo'ladi YOZING | IJRO ET 0001 | 0100 | 0110 => 0111 Ammo ruxsatnomalar aslida (bizning misolimizda) 0001 0100 0110 sifatida taqdim etiladi - Ammo ruxsatnomalar aslida (bizning misolimizda) 0001 0100 0110 sifatida taqdim etiladi
- Shunday qilib, buni amalga oshirish uchun biz bilamizki, READ 8 bit orqada, WRITE 4 bit orqada va RUXSATLAR
- oxirgi o'ringa qo'yiladi. RESOURCE ruxsatnomalari uchun ishlatiladigan raqam tizimi aslida 12 bit (bizning misolimizda). Bu turli tizimlarda har xil bo'lishi mumkin (bo'ladi).
- (READ << 8) | (WRITE << 4) | (EXECUTE)
- 0000 0000 0001 << 8 (READ)
- 0001 0000 0000 (Left shift by 8 bits)
- 0000 0000 0100 << 4 (WRITE)
- 0000 0100 0000 (Left shift by 4 bits)
- 0000 0000 0001 (EXECUTE)
- Endi yuqoridagi siljish natijalarini qo'shsak, u shunday bo'ladi;
- 0001 0000 0000 (READ)
- 0000 0100 0000 (WRITE)
- 0000 0000 0001 (EXECUTE)
- 0001 0100 0001 (PERMISSIONS)
- 22.4-bo'lim: Imzolangan va imzolanmagan siljish
- Java-da barcha sonlar primitivlari imzolanadi. Masalan, int har doim [-2^31 - 1, 2^31] dan qiymatlarni ifodalaydi,qiymatni imzolash uchun birinchi bit - salbiy qiymat uchun 1, ijobiy uchun 0.
- Asosiy siljish operatorlari >> va << imzolangan operatorlardir. Ular qiymat belgisini saqlab qoladilar.
- Ammo dasturchilar tomonidan imzolanmagan qiymatlarni saqlash uchun raqamlardan foydalanish odatiy holdir. Int uchun bu diapazonni o'zgartirishni anglatadi [0, 2^32 - 1] ga, imzolangan intga qaraganda ikki baravar ko'p qiymatga ega bo'lish.
- Bu kuchli foydalanuvchilar uchun, belgisi uchun bit hech qanday ma'no sifatida. Shuning uchun Java e'tibor bermay, chapga siljish operatori >>> qo'shdi bu belgi bit.
- initial value: 4 ( 100)
- signed left-shift: 4 << 1 8 ( 1000)
- signed right-shift: 4 >> 1 2 ( 10)
- unsigned right-shift: 4 >>> 1 2 ( 10)
- initial value : -4 ( 11111111111111111111111111111100)
- signed left-shift: -4 << 1 -8 ( 11111111111111111111111111111000)
- signed right-shift: -4 >> 1 -2 ( 11111111111111111111111111111110)
- unsigned right-shift: -4 >>> 1 2147483646 ( 1111111111111111111111111111110)
Do'stlaringiz bilan baham: |