§ 27. Бітавыя аперацыі ў мове праграміравання
Практыкаванні
1. Дадзены два натуральныя лікі a і b. Скласці праграму, якая рэалізуе для гэтых лікаў бітавую аперацыю па модулі два.
2. Вылічыце xor усіх лікаў на адрэзку [a, b].
3. Рэалізуйце праграмы з прыкладу 27.16. Пратэсціруйце для розных уваходных даных.
4. Дадзены лік n. Выкарыстоўваючы бітавыя аперацыі, замяніце адзінку ў малодшым разрадзе двайковага запісу ліку n на нуль.
5. Дадзены два натуральныя лікі a і n. Знайдзіце такі мінімальны натуральны лік b, што a xor b цалкам дзеліцца на n.
6. Дадзены натуральныя лікі а і k. Выведзіце лік, які складаецца толькі з k апошніх біт ліку а (гэта значыць, выкарыстоўваючы бітавыя аперацыі, абнуліце ўсе біты ліку а, акрамя апошніх k).
7. Дадзены натуральныя лікі n і k. Выкарыстоўваючы бітавыя аперацыі, абнуліце ў ліку n яго апошнія k біт і выведзіце вынік.
8. Значэннем функцыі Фенвіка для ліку n называецца максімальная ступень двойкі, на якую цалкам дзеліцца лік n. Па зададзеным ліку n вызначыце для яго значэнне функцыі Фенвіка.
9. Дадзены натуральны лік. Вызначыце, колькі разоў сустракаюцца дзве адзінкі запар (11) у двайковым уяўленні гэтага ліку (у двайковым уяўленнні 11110111 яны сустракаюцца 5 разоў).
10. Дадзены натуральны дзесятковы лік n. Памяняйце месцамі два біты з зададзенымі нумарамі ў двайковым уяўленні гэтага ліку. Напрыклад, калі n = 5 і трэба памяняць біты з нумарамі 1 і 2, то адказам будзе 3.
11. Дадзены натуральны дзесятковы лік n. Выкрасліце i-ы біт з двайковага ўяўлення гэтага ліку (малодшыя зап i-ы біт застаюцца на месцы, старшыя зрушваюцца на адзін разрад управа). Напрыклад, калі n10 = 29 (n2 = 111012)і i = 1, адказам будзе 1510 (11112).
12. Дадзены тры натуральныя лікі. Знайдзіце новы лік, кожны біт якога роўны таму значэнню, якое сустракаецца часцей сярод біт з такім жа нумарам у дадзеных лікаў.
13. Для настольнай гульні выкарыстоўваюцца карткі з нумарамі ад 1 да n (натуральны лік n не перавышае 106). Адна картка згубілася. Складзіце праграму яе пошуку. Зададзены: лік n і n - 1 номеров оставшихся карточек.
14. Дома ў Ксюшы было 2 аднолькавыя наборы кубікаў з англійскіх літар, але ў час чарговага прыбірання адзін з кубікаў згубіўся. Дапамажыце Ксюшы вызначыць, які з кубікаў адсутнічае ў адным з набораў.
15. Дадзены натуральны дзесятковы лік n. Утвараюцца ўсе магчымыя левыя цыклічныя зрухі двайковага ўяўлення ліку n, у якіх першая лічба ліку пераносіцца ў канец.
Напрыклад, калі n = 1110 (10112), то яго цыклічныя зрухі: 01112, 11102, 11012, 10112. Максімальнае значэнне m ва ўсіх атрыманых такім чынам лікаў будзе мець лік 11102 = 1410.
Складзце праграму, якая для зададзенага ліку n вызначае максімальнае значэнне m.
16. Дадзены натуральны лік n. З гэтым лікам дазваляецца неабмежаваную колькасць разоў праводзіць перастаноўку значных біт зададзенага ліку, атрымлівючы такім чынам новыя лікі. Знайдзіце найбольшую рознасць двух лікаў, кожны з якіх можна атрымаць у выніку выкананняў такіх перастановак.
17. Дадзены натуральны лік a. Напішыце выраз, вынікам якога з’яўляецца значэнне дадзенага ліку, дзе малодшы нулявы біт устаноўлены ў 1.
18. Дадзены натуральны лік a. Напішыце выраз, вынікам якога з’яўляецца пераўтварэнне дадзенага ліку ў лік, у якога ўсе біты устаноўлены ў 1, акрамя малодшага нулявога біта.