LINUX.ORG.RU

Ответ на: комментарий от mystery

Побитовый перенос

Как его отладить? Он делает явно не то, что мне нужно. Но как понять, что он делает?

Shadow ★★★★★
() автор топика
Ответ на: комментарий от x3al

ОНО!
Теперь понятно, что я это не для того использовал.

Shadow ★★★★★
() автор топика

Вау, еще один хейтер жоэс порвался. Стыдно за вас, старперы.

anonymous
()

Если бы это был C, то я однозначно сказал, что это

if (a == l/2)
Но т.к. это жысы, с ихнем >>, >>>, >>>>, >>>>> то я не знаю. ;)

beastie ★★★★★
()
Ответ на: комментарий от Shadow

Сдвиг со знаком.

Тебе для целочисленного наверное надо было >>> 0 или |0

Vit ★★★★★
()

А не надо было выпендриваться, для таких умников куча статей написано: не выпендривайся пиши обычный код понятный монкикодерам.

foror ★★★★★
()

В этом выражении тебе зачем-то понадобилось целочислено разделить l на 2. Т.е. 0..011 в итоге приводил к виду 0..001 Видимо тебя не устраивало обычное деление на 2, которое бы привело к типу double, а не к integer. Хотя честно говоря сам в этой скриптоте плохо разбираюсь как и чего и куда оно приводит.

foror ★★★★★
()
Ответ на: комментарий от ya-betmen

a == l >> 1

a настолько равно l, что это утверждения намного истинней, чем просто истина

MyTrooName ★★★★★
()
Ответ на: комментарий от beastie

Вот и я запутался. Что характерно, в треде пара человек всего понимают, что там происходит.

Shadow ★★★★★
() автор топика
Ответ на: комментарий от foror

Угу. Я рисовал паутинную диаграмму с помощью мышки, и переводил декартовы координаты в полярные и наоборот. Так как шаг сетки был задан, делал всё целочисленно. Кто ж знал, что в жс правильно флоат функциями округлять на каждый чих (обычно это эталон, как нельзя писать)

Shadow ★★★★★
() автор топика

l >> 1

Это кто-то умничает и так делит на 2.

no-such-file ★★★★★
()
Ответ на: комментарий от Shadow

Но почему так не по-человечески?

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

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Это действительно быстрей, только не всегда.


counter = 1000000
op = 0

console.time("casual")
while(counter--) op++ / 2
console.timeEnd("casual")

counter = 1000000
op = 0
console.time("bit")
while(counter--) op++ >> 1
console.timeEnd("bit")



//>>>> casual: 72.028ms
//>>>> bit: 38.987ms

xlsparse
()
Ответ на: комментарий от xlsparse

Это действительно быстрей, только не всегда

По сравнению со скоростью самого js - это всё экономия на спичках.

Ну и

~> cat > test.js
counter = 1000000
op = 0

console.time("casual")
while(counter--) op++ / 2
console.timeEnd("casual")

counter = 1000000
op = 0
console.time("bit")
while(counter--) op++ >> 1
console.timeEnd("bit")

~> node test.js
casual: 5ms
bit: 5ms

А если гонять на 10000000 итераций, то

casual: 38ms
bit: 48ms

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Это я хотел целочисленное. Но так как в двоичном счислении не считаю, а при этом выполнял преобразование координат, насажал багов. Спасибо за комментарий про экономию на спичках.

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.