Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Bitwise Operators (примеры) (https://javascript.ru/forum/offtopic/46352-bitwise-operators-primery.html)

dmitry111 07.04.2014 08:02

Bitwise Operators (примеры)
 
Побитовые операторы применяются редко, однако они являются очень производительными!

Используете?

Поделитесь примерами с использованием побитовых операторов.


Вот где использовал я:


// переводит в целое число из строки
function getIntNumber(str) {
  return ~~str;
}

alert(getIntNumber('15.343'));



// проверяет массив на наличие единиц
function checkArray(arr) {
  var str = arr.join('');

  if (~~str) {
    return true;
  } else {
    return false;
  }
}

alert(checkArray([0,0,0,0,0,1,0]));
alert(checkArray([0,0,0,0,0,0,0]));

kobezzza 07.04.2014 08:28

В основном использую побитовое ИЛИ для использования битовых масок, а остальные операторы как правило только при реализации конкретных алгоритмов, где они используются.

monolithed 07.04.2014 08:37

Не могу сказать, что прям уж часто, но бывают такие кейсы:
n | 0
n & 0
~n
n >> ...
n << ...
n & (n - 1)
n |= ...
n &= ...

Gozar 07.04.2014 10:17

Цитата:

Сообщение от dmitry111
getIntNumber

Ну и зачем этот велосипед?

Есть же родное:
parseInt('15.343', 10)



Цитата:

Сообщение от dmitry111
являются очень производительными!

В js? можно ссыль на тесты?

ИМХО, экономия на спичках и доп.затраты на распутывание кода.

Gozar 07.04.2014 10:33

Единственное прикольное применение это табличка доступов(access) и упаковка ее в число. В остальном побитовые используются в алгоритмах. Например https://github.com/drench/blowfish.j...er/blowfish.js - нужны они там или нет, я хз. Но в js побитовые не очень нужны.

monolithed 07.04.2014 10:44

var is_browser = false;
is_browser |= typeof window !== 'undefined'

alert(is_browser && 'Это браузер');


:D

melky 07.04.2014 10:48

Цитата:

Сообщение от dmitry111
Побитовые операторы применяются редко, однако они являются очень производительными!

брехня.

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

я могу подсказать - читай либо исходники движка, либо спецификацию :)

я пытался оптимизировать логику через бинарные операторы ... и я получил замедление.
http://jsperf.com/bitwise-vs-boolean

Цитата:

Сообщение от Gozar
В js? можно ссыль на тесты?

тучи сгущаются :)

nerv_ 07.04.2014 11:02

Цитата:

Сообщение от melky
тучи сгущаются

тучи смущаются :) А тучи как люююди :D

<iframe width="420" height="315" src="//www.youtube.com/embed/jE1ynO9LxJ4" frameborder="0" allowfullscreen></iframe>

dmitry111 07.04.2014 15:45

Цитата:

Сообщение от Gozar (Сообщение 306520)
Ну и зачем этот велосипед?

Есть же родное:
parseInt('15.343', 10)




В js? можно ссыль на тесты?

ИМХО, экономия на спичках и доп.затраты на распутывание кода.


http://jsperf.com/parseint-vs-bitwise-int

monolithed 07.04.2014 16:39

dmitry111, ты забыл:

testnum | 0


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