Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверить Четность (https://javascript.ru/forum/misc/30018-proverit-chetnost.html)

bes 21.07.2012 17:21

devote, насколько я знаю, понятие чётности относится только к целым числам, не?

nerv_ 21.07.2012 17:46

Цитата:

Сообщение от FINoM
Не очевидно.

да не, нормально. Используется двоичное представление числа. Чтобы было очевидным, можешь в Math добавить : )

bes, да

Math.isEven = function( num ) {
	return !( num & 1 );
};

Math.isOdd = function( num ) {
	return !!( num & 1 );
};

alert( Math.isEven( 11 ) );
alert( Math.isOdd( 11 ) );

devote 21.07.2012 18:01

Цитата:

Сообщение от bes
devote, насколько я знаю, понятие чётности относится только к целым числам, не?

ну дык поэтому я и юзаю везде оператор &, что бы оперировать тока с целыми

melky 22.07.2012 09:40

Цитата:

Сообщение от nerv_ (Сообщение 190533)
да не, нормально. Используется двоичное представление числа. Чтобы было очевидным, можешь в Math добавить : )

bes, да

Math.isEven = function( num ) {
	return !( num & 1 );
};

Math.isOdd = function( num ) {
	return !!( num & 1 );
};

alert( Math.isEven( 11 ) );
alert( Math.isOdd( 11 ) );



Math.isEven = function( num ) {
	return !( num & 1 );
};

Math.isOdd = function( num ) {
*!*
	return !Math.isEven(num);
*/!*
};


не сдержался :)

Цитата:

Сообщение от devote (Сообщение 190514)
сложно в чем? символ "&" сложный чтоль?

он такой загадочный :-?

devote 22.07.2012 09:46

Цитата:

Сообщение от melky
не сдержался

да но лишний вызов функции в данном случае ни к чему.

devote 22.07.2012 09:53

Цитата:

Сообщение от melky
он такой загадочный

и я понять не могу что в нем не очевидного то? обычное битовое И, проверяет присутствие указанного бита. В нашем случае присутствие первого бита. И если есть первый бит то число однозначно нечетное.

leko 22.07.2012 22:29

Цитата:

Сообщение от devote
и я понять не могу что в нем не очевидного то?

имхо, неочевидное выражение
не знаю как в js, но в других ЯП такую оптимизацию делает компилятор/интерпретатор
x % 2 == 0 => x & 1

devote 22.07.2012 22:51

Цитата:

Сообщение от leko
но в других ЯП такую оптимизацию делает компилятор/интерпретатор

это я в курсе, и это не ответ на вопрос:
Цитата:

Сообщение от devote
и я понять не могу что в нем не очевидного то?


melky 22.07.2012 23:21

Цитата:

Сообщение от devote (Сообщение 190657)
да но лишний вызов функции в данном случае ни к чему.

однако, это лучше дублирования кода ;)

Цитата:

Сообщение от devote (Сообщение 190659)
и я понять не могу что в нем не очевидного то? обычное битовое И, проверяет присутствие указанного бита. В нашем случае присутствие первого бита. И если есть первый бит то число однозначно нечетное.

со школы мы привыкли, что чётное число - число, делящееся на два без остатка, в этом и суть.

а альтернативные пути через биты приходят уже со временем.

devote 22.07.2012 23:38

Цитата:

Сообщение от melky
однако, это лучше дублирования кода

спору нет, но не в этом случае... нет смысла вызывать функцию, ради a & 1


Часовой пояс GMT +3, время: 17:05.