Өгөгдсөн тоонуудын хувьд хоёртын үйлдэл хийнэ гэдэг маань тухайн тоонуудын хоёртын бичиглэл дахь ижил байранд байгаа бит (0, 1) болгонд үйлдэл хийж шинэ битийг гаргахыг хэлэх юм. Жишээ нь A=10, B=12 гэсэн хоёр тоонд битийн үйлдлүүд хийж үзье. Энэ тохиолдолд А тооны хоёртын бичиглэл = 1010, B тооны хоёртын бичиглэл=1100 юм.
- A & B = 1000 = 8
- A | B = 1110 = 13
- A ^ B = 0110 = 5
За одоо bitmask-н талаар тайлбарлая.
Бидэнд өгөгдсөн олонлогийн бүх дэд олонлогийг байгуул гэсэн бодлого өгөдсөн байг. N элементтэй олонлогийн бүх дэд олонлог 2^N ширхэг байдаг. Тэгвэл яаж дэд олонлогуудаа байгуулах вэ? Тайлбарлахын тулд бодлогоо илүү энгийн болгоё.
Танд алим, жүрж, киви гэсэн гурван жимс байг. Тэгвэл жимснүүдээ хэдэн янзаар сонгож авч болох вэ?
Бодолт:
Жимс бүрийг нэг бит тоо гэж үзээд дэд олонлогоо үүсгэхдээ тухайн жимсийг сонгосон бол 1, сонгоогүй бол 0-ээр тэмдэглэе. Жишээ нь эхний удаад
ямар ч жимс сонгохгүй байвал 000,
зөвхөн киви сонговол 001,
зөвхөн жүрж сонговол 010,
зөвхөн алим сонговол 100,
алим киви сонговол 101, ийм сонголт нийтдээ 2^3 ширхэг байгаа. Хэрэв сайн ажиглавал 0 - 23-1 тоо бүр нэг сонголтыг(дэд олонлогийг) илэрхийлж байна.
0 - 000
1 - 001
2 - 010
3 - 011
4 - 100
5 - 101
6 - 110
7 - 111
Дээрх тайлбараас бодолт тодорхой болсон байх гэж бодож байна.
За тэгээд bitmask гэж ерөнхийдөө дээрх аргыг хэлнэ. Bitmask-н хувьд хугацааны үнэлгээ O(2^N) болохоор үнэхээр битмаск мөнүү бишүү гэдэгийг сайн бодож бодоорой.
No comments:
Post a Comment