22-bob: Bit bilan manipulyatsiya


>> 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 foydalan


Download 73.73 Kb.
bet3/5
Sana30.03.2023
Hajmi73.73 Kb.
#1309761
1   2   3   4   5
Bog'liq
Dasturlash PowerPoint Presentation

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

  • 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)

Download 73.73 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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