Сохранение плавающей запятой и добавление побитовая операция в javascript

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

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

Используя приведенный ниже код для справки, я могу понять, что перенос содержит значение &ing. Затем, выполнив операцию XOr, которая устанавливает сумму var в биты, которые не совпадают в каждой переменной n1 / n2.

Вот мой вопрос.; )Что дает сдвиг (n1 и n2 )

function add(n1,n2)
{
        var carry, sum;

        // Find out which bits will result in a carry.
        // Those bits will affect the bits directly to
        // the left, so we shall shift one bit.
        carry = (n1 & n2) << 1;

        // In digital electronics, an XOR gate is also known
        // as a quarter adder.  Basically an addition is performed
        // on each individual bit, and the carry is discarded.
        //
        // All I'm doing here is applying the same concept.
        sum = n1 ^ n2;

        // If any bits match in position, then perform the
        // addition on the current sum and the results of
        // the carry.
        if (sum & carry)
        {
                return add(sum, carry);
        }

        // Return the sum.
        else
        {
                return sum ^ carry;
        };
};

Приведенный выше код работает должным образом, но не возвращает значения с плавающей запятой. Мне нужно, чтобы общая сумма возвращалась вместе со значением с плавающей запятой.

Есть ли у кого-нибудь функция, которую я могу использовать с вышеизложенным, которая поможет мне со значениями с плавающей запятой?Есть ли веб-сайт с четким объяснением того, что я ищу? Я пробовал искать в последний день так и не могу найти ничего, чтобы посмотреть.

Я получил приведенный выше код с этого ресурса.http://www.dreamincode.net/code/snippet3015.htm

Заранее спасибо!

Подумав об этом, сдвиг влево в 1 позицию будет умножением на 2.

Таким образом, &ing:Carry = (n1 & n2 )Переменная переноса будет содержать строку двоичных файлов, скомпилированных из совпавших позиций в n1 и n2. Итак, если n1 равно 4, а n2 равно 4, они оба имеют одно и то же значение. Следовательно, при сложении двух и сдвиге вправо к индексу 1 будет умножаться 4 x 2 = 8; поэтому перенос теперь будет равен 8.

1. )var перенос = 00001000 =8 & 00001000 = 8

2. )Carry = теперь содержит единственное значение 00001000 = 8

Сдвиг влево умножит 8 x 2 = 16, или 8 + 8 = 16

3. )перенос = перенос

4. )перенос теперь содержит одно значение 00010000 = 16

Я до сих пор не могу найти ничего по работе со значениями с плавающей запятой. Если у кого-то есть что-то, киньте ссылку.

5
задан mskfisher 13 July 2012 в 12:12
поделиться