| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > lowestOneBit |
| Автор: priam220 25.8.2011, 17:09 | ||
| Не совсем понятно a) метод возвращает 1, 2 либо число кратное степеням двойки (2, 4, 8). Это как то не сочитается с ее описанием:
b) как можно еще использоваться этот странный метод (кроме проверки четности, как выяснилось). |
| Автор: priam220 25.8.2011, 17:35 | ||
тут была http://forum.vingrad.ru/forum/topic-336842.html, там подкинули такую идею, по поводу проверки четности.
так вроде ж не просто бит, а крайне правый бит... А какой крайне правый бит в еденицу у 16? Плюс метод называется lowestOneBit... Я бы хотел получать значение 0/1 от такого метода, разве не логично? Как хотите это конечно правильно. Только что б захотеть, надо еще догадаться. |
| Автор: Nofate 25.8.2011, 19:46 |
| Там чистым английским языком написано, что возвращается число, которое содержит всего один бит, установленный в единицу (остальные биты - нули), соответствующий самому правому биту, установленному в единицу в передаваемом аргументе. Если бы функция возвращала просто младший бит, назвалась бы lowestBit ) Только его итак легко получить в виде остатка от деления на 2 (т.е. x%2) А этой функция очень полезна при всевозможных операциях, связанных с битовыми полями. Например, вы в виде значения типа 01011100 храните набор флагов, каждый флаг соответствует какому-то действию или состоянию, и среди них приоритет имеет самый младший включенный флаг. - Еще таким образом можно определять, делится ли число на 2, 4, 8, 16 и т.д. - На четность проще проверять как раз остатком от деления на 2. Но при помощи этой функции можно определить как четные все числа , для которых lowestOneBit(x) <> 1 |
| Автор: priam220 25.8.2011, 20:14 |
| К сожалению, не у всех так хорошо с чистым английским. Спасибо, понял. А почему лучше? |
| Автор: jk1 26.8.2011, 04:41 | ||
Потому что очевиднее. Вариант с lowestOneBit() эффективнее, но в сколько-нибудь большом проекте читаемость и очевидность кода куда важнее. |