§ 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, акрамя малодшага нулявога біта.