Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> lowestOneBit 
V
    Опции темы
priam220
Дата 25.8.2011, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Не совсем понятно 
a) метод возвращает 1, 2 либо число кратное степеням двойки (2, 4, 8).
 Это как то не сочитается с ее описанием:
Код

lowestOneBit
public static int lowestOneBit(int i)
Returns an int value with at most a single one-bit, in the position of the lowest-order ("rightmost") one-bit in the specified int value. Returns zero if the specified value has no one-bits in its two's complement binary representation, that is, if it is equal to zero. 

Returns:
an int value with a single one-bit, in the position of the lowest-order one-bit in the specified value, or zero if the specified value is itself equal to zero.
Since:
1.5


b) как можно еще использоваться этот странный метод (кроме проверки четности, как выяснилось).
PM MAIL   Вверх
Дрон
Дата 25.8.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 93



priam220
Цитата(priam220 @  25.8.2011,  18:09 Найти цитируемый пост)
a) метод возвращает 1, 2 либо число кратное степеням двойки (2, 4, 8).

Это правильно, ведь в описании сказано, что возвращается число либо с одним битом, установленным в 1, либо число 0.
А один включенный бит выглядит в десятичной виде как число кратное степени двойки. Например: 00010000 это 16; 00000010 это 2.

Цитата(priam220 @  25.8.2011,  18:09 Найти цитируемый пост)
как можно еще использоваться этот странный метод (кроме проверки четности, как выяснилось). 

Как хотите smile
Если хочется получить индекс первого включенного бита, а не его значение, то есть метод numberOfTrailingZeros

Добавлено через 2 минуты и 41 секунду
Кстати, не совсем понятно что за "проверка чётности" имеется ввиду.

Это сообщение отредактировал(а) Дрон - 25.8.2011, 17:19


--------------------
Да. Именно так.
PM   Вверх
priam220
Дата 25.8.2011, 17:35 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



тут была тема, там подкинули такую идею, по поводу проверки четности.

Цитата

in the position of the lowest-order ("rightmost")

так вроде ж не просто бит, а крайне правый бит... А какой крайне правый бит в еденицу у 16?

Плюс метод называется lowestOneBit... Я бы хотел получать значение 0/1 от такого метода, разве не логично?


Как хотите это конечно правильно. Только что б захотеть, надо еще догадаться. smile

Это сообщение отредактировал(а) priam220 - 25.8.2011, 17:38
PM MAIL   Вверх
Nofate
Дата 25.8.2011, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 13.10.2008

Репутация: 4
Всего: 8



Там чистым английским языком написано, что  возвращается число, которое содержит всего один бит, установленный в единицу (остальные биты - нули), соответствующий самому правому биту, установленному в единицу в передаваемом аргументе.

Если бы функция возвращала просто младший бит, назвалась бы lowestBit ) Только его итак легко получить в виде остатка от деления на 2  (т.е. x%2) 

А этой функция очень полезна при всевозможных операциях, связанных с битовыми полями. Например, вы в виде значения типа 01011100 храните набор флагов, каждый флаг соответствует какому-то действию или состоянию, и среди них приоритет имеет самый младший включенный флаг.

Еще таким образом можно определять, делится ли число на 2, 4, 8, 16 и т.д.
-
На четность проще проверять как раз остатком от деления на 2. Но при помощи этой функции можно определить как четные все числа , для которых lowestOneBit(x)  <> 1


Это сообщение отредактировал(а) Nofate - 25.8.2011, 19:51


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
priam220
Дата 25.8.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



К сожалению, не у всех так хорошо с чистым английским. Спасибо, понял.
А почему лучше? 

Это сообщение отредактировал(а) priam220 - 25.8.2011, 20:18
PM MAIL   Вверх
jk1
Дата 26.8.2011, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

А почему лучше?


Потому что очевиднее. Вариант с lowestOneBit() эффективнее, но в сколько-нибудь большом проекте читаемость и очевидность кода куда важнее.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.