BitWise Жокер
Здравейте колеги,
Готвите ли се за задачите с побитови? Ако да това може да ви е полезно.
Много често ми се налага да търся десетично число, чиято битова стойност ми върши работа. Има някои случай в които просто трябва да променя 1 бит на дадена позиция. Започнах да използвам побитовия запис: с 0b... или 0x... защото е по-човешко и защото нагледно виждам битовото число.
Детайли и примери:
https://stackoverflow.com/questions/12015598/how-to-set-unset-a-bit-at-specific-position-of-a-long
Друг номер, който вече всички знаем е как да си вземем бита на позиция Х. Шифтваме надясно числото Х пъти и го сравняваме с 1:
private static int getBit(int num, int position){ return (num >> position) & 1; }
Последното което намирам за супер полезно е печатенето на числото след всяка итерация. Веднъж разбереш ли какво трябва да се случва лесно можеш да си следиш итерациите:
System.out.println(Integer.toBinaryString(num));
Потърсих в Judge задачи с битове и намерих няколко. По интересното е, че първата задача от изпита ни се казва 01. Bit Snow. Който не вярва да потърси за думичката bit.
Задачата с битове от днешната подготовка я реших по метода на баба ми. Въртя и риплейсвам на 2 места. Има коментирани дъмпове за итерациите.
03. BitRoller
https://pastebin.com/saJYyw0x