22.2-bo'lim: java.util.BitSet klassi - 22.2-bo'lim: java.util.BitSet klassi
- 1.7 dan boshlab java.util.BitSet klassi mavjud bo'lib, u oddiy va foydalanuvchilarga qulay bit saqlash va manipulyatsiyani ta'minlaydi.
- interfeysi:
- final BitSet bitSet = new BitSet(8); // by default all bits are unset
- IntStream.range(0, 8).filter(i -> i % 2 == 0).forEach(bitSet::set); // {0, 2, 4, 6 }
- bitSet.set(3); // {0, 2, 3, 4, 6 }
- bitSet.set(3, false); // {0, 2, 4, 6}
- final boolean b = bitSet.get(3); // b = noto’g’ri
- bitSet.flip(6); // {0, 2, 4}
- bitSet.set(100); // {0, 2, 4, 100} - expands automatically
- BitSet Clonable va Serializable-ni qo'llaydi va qopqoq ostida barcha bit qiymatlari long[] so'zlar maydonida saqlanadi,bu avtomatik ravishda kengayadi.
- Shuningdek, u butun mantiqiy operatsiyalarni qo'llab-quvvatlaydi va, yoki, xor va Not:.
- bitSet.and(new BitSet(8));
- bitSet.or(new BitSet(8));
- bitSet.xor(new BitSet(8));
- bitSet.andNot(new BitSet(8));
22.3-bo'lim: Raqam 2 ning darajasi yoki yo'qligini tekshirish - 22.3-bo'lim: Raqam 2 ning darajasi yoki yo'qligini tekshirish
- Agar x butun soni 2 ning darajasi bo'lsa, faqat bitta bit o'rnatiladi, x-1 esa undan keyingi barcha bitlarga ega. Masalan: 4 - 100 va 3
- 011 ikkilik raqam bo'lib, yuqorida aytib o'tilgan shartni qondiradi. Nol 2 ning kuchi emas va shunday bo'lishi kerak
- aniq tekshiriladi.
- boolean isPowerOfTwo (int x)
- {
- return (x != 0) && ((x & (x - 1)) == 0);
- }
- Chapga va o'ngga siljish uchun foydalanish
- Faraz qilaylik, bizda uchta turdagi ruxsat bor: O'QISH, YOZISH va ISHLATISH. Har bir ruxsat 0 dan oralig'ida bo'lishi mumkin
- 7. (4 bitli sanoq sistemasini faraz qilaylik)
- RESOURCE = READ WRITE EXECUTE (12 bit number)
- RESOURCE = 0100 0110 0101 = 4 6 5 (12 bit number
Yuqorida o'rnatilgan (12 bitlik raqam) ruxsatlarni qanday olishimiz mumkin? - Yuqorida o'rnatilgan (12 bitlik raqam) ruxsatlarni qanday olishimiz mumkin?
- 0100 0110 0101
- 0000 0000 0111 (&)
- 0000 0000 0101 = 5
- Shunday qilib, biz RESURSning EXECUTE ruxsatini olishimiz mumkin. Endi biz O'QIShni olishni istasak nima bo'ladi? RESOURCE ruxsatlari?
- 0100 0110 0101
- 0111 0000 0000 (&)
- 0100 0000 0000 = 1024
- To'g'rimi? Siz buni taxmin qilyapsizmi? Lekin, ruxsatnomalar natijasida 1024. Biz faqat READ olishni xohlaymiz resurs uchun ruxsatlar. Xavotir olmang, shuning uchun bizda smena operatorlari bor edi. Agar ko'rsak, READ ruxsatnomalari 8 ga teng haqiqiy natijaning orqasida bitlar, shuning uchun agar o'zgartirish operatorini qo'llasangiz, READ ruxsatini o'ng tomoniga olib keladi. natija? Nima qilsak:
Do'stlaringiz bilan baham: |