2015-10-02 2 views
0

Если у меня есть переменная с 8589934592Javascript | Обратный отсчет

Пример:

var a = (8589934592 | 0); 
    //a is 0 

    var b = (8589934591223 | 0); 
    //b is -777 

    var c = (85899345999 | 0) 
    //c is 79 

    var d = (858993459 | 0); 
    //d is 858993459 

Как я понимаю, d является правильным, но если я пытаюсь цифры больше, чем 858993459

, но если у меня есть: например,

var a = (2147483647 | 0) 
    //a is 2147483647 

    var b = (2147483648 | 0) 
    //b is -2147483648 

    var c = (2147483649 | 0) 
    //c is -2147483647 

Я думаю, что это как отрицательный обратный отсчет, как я могу избежать этого?

+1

Так почему вы используете '| 0' на всех? Как вы думаете, что вы думаете, что вы ожидали от этого? – Bergi

+0

Вычитание так же просто, как и получается ... нет веских оснований для его усложнения. –

ответ

1

Вы делаете операцию побитового (простой |: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_OR)

Из-за этого, это делается с помощью 32-битного подписали Int.

Может быть, вы хотите, чтобы удвоить его использовать бинарный логический оператор (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_OR)

Смежные вопросы