Class: Long

Long

new Long(low, high){Long}

Defines a Long class for representing a 64-bit two's-complement
integer value, which faithfully simulates the behavior of a Java "Long". This
implementation is derived from LongLib in GWT.

Constructs a 64-bit two's-complement integer, given its low and high 32-bit
values as signed integers. See the from* functions below for more
convenient ways of constructing Longs.

The internal representation of a Long is the two given signed, 32-bit values.
We use 32-bit pieces because these are the size of integers on which
Javascript performs bit-operations. For operations like addition and
multiplication, we split each number into 16-bit pieces, which can easily be
multiplied within Javascript's floating-point representation without overflow
or change in sign.

In the algorithms below, we frequently reduce the negative case to the
positive case by negating the input(s) and then post-processing the result.
Note that we must ALWAYS check specially whether those values are MIN_VALUE
(-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
a positive number, it overflows back into a negative). Not handling this
case would often result in infinite recursion.

Name Type Description
`low` number

the low (signed) 32 bits of the Long.

`high` number

the high (signed) 32 bits of the Long.

Methods

staticLong.fromBits(lowBits, highBits){Long}

Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits.

Name Type Description
`lowBits` number

the low 32-bits.

`highBits` number

the high 32-bits.

Returns:
corresponding Long value.

staticLong.fromInt(value){Long}

Returns a Long representing the given (32-bit) integer value.

Name Type Description
`value` number

the 32-bit integer in question.

Returns:
corresponding Long value.

staticLong.fromNumber(value){Long}

Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.

Name Type Description
`value` number

the number in question.

Returns:
corresponding Long value.

Returns a Long representation of the given string, written using the given radix.

Name Type Description
`str` string

the textual representation of the Long.

`opt_radix` number

the radix in which the text is written.

Returns:
corresponding Long value.

Returns the sum of this and the given Long.

Name Type Description
`other` Long

Long to add to this one.

Returns:
sum of this and the given Long.

and(other){Long}

Returns the bitwise-AND of this Long and the given one.

Name Type Description
`other` Long

the Long with which to AND.

Returns:
bitwise-AND of this and the other.

compare(other){boolean}

Compares this Long with the given one.

Name Type Description
`other` Long

Long to compare against.

Returns:
if they are the same, 1 if the this is greater, and -1 if the given one is greater.

div(other){Long}

Returns this Long divided by the given one.

Name Type Description
`other` Long

Long by which to divide.

Returns:
Long divided by the given one.

equals(other){boolean}

Return whether this Long equals the other

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long equals the other

getHighBits(){number}

Return the high 32-bits value.

Returns:
high 32-bits as a signed value.

getLowBits(){number}

Return the low 32-bits value.

Returns:
low 32-bits as a signed value.

getLowBitsUnsigned(){number}

Return the low unsigned 32-bits value.

Returns:
low 32-bits as an unsigned value.

getNumBitsAbs(){number}

Returns the number of bits needed to represent the absolute value of this Long.

Returns:
the number of bits needed to represent the absolute value of this Long.

greaterThan(other){boolean}

Return whether this Long is greater than the other.

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long is greater than the other.

greaterThanOrEqual(other){boolean}

Return whether this Long is greater than or equal to the other.

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long is greater than or equal to the other.

isNegative(){boolean}

Return whether this value is negative.

Returns:
this value is negative.

isOdd(){boolean}

Return whether this value is odd.

Returns:
this value is odd.

isZero(){boolean}

Return whether this value is zero.

Returns:
this value is zero.

lessThan(other){boolean}

Return whether this Long is less than the other.

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long is less than the other.

lessThanOrEqual(other){boolean}

Return whether this Long is less than or equal to the other.

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long is less than or equal to the other.

modulo(other){Long}

Returns this Long modulo the given one.

Name Type Description
`other` Long

Long by which to mod.

Returns:
Long modulo the given one.

multiply(other){Long}

Returns the product of this and the given Long.

Name Type Description
`other` Long

Long to multiply with this.

Returns:
product of this and the other.

negate(){Long}

The negation of this value.

Returns:
negation of this value.

not(){Long}

The bitwise-NOT of this value.

Returns:
bitwise-NOT of this value.

notEquals(other){boolean}

Return whether this Long does not equal the other.

Name Type Description
`other` Long

Long to compare against.

Returns:
this Long does not equal the other.

or(other){Long}

Returns the bitwise-OR of this Long and the given one.

Name Type Description
`other` Long

the Long with which to OR.

Returns:
bitwise-OR of this and the other.

shiftLeft(numBits){Long}

Returns this Long with bits shifted to the left by the given amount.

Name Type Description
`numBits` number

the number of bits by which to shift.

Returns:
shifted to the left by the given amount.

shiftRight(numBits){Long}

Returns this Long with bits shifted to the right by the given amount.

Name Type Description
`numBits` number

the number of bits by which to shift.

Returns:
shifted to the right by the given amount.

shiftRightUnsigned(numBits){Long}

Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit.

Name Type Description
`numBits` number

the number of bits by which to shift.

Returns:
shifted to the right by the given amount, with zeros placed into the new leading bits.

subtract(other){Long}

Returns the difference of this and the given Long.

Name Type Description
`other` Long

Long to subtract from this.

Returns:
difference of this and the given Long.

toInt(){number}

Return the int value.

Returns:
value, assuming it is a 32-bit integer.

toJSON(){string}

Return the JSON value.

Returns:
JSON representation.

toNumber(){number}

Return the Number value.

Returns:
closest floating-point representation to this value.

Return the String value.

Name Type Description
`opt_radix` number optional

the radix in which the text should be written.

Returns:
textual representation of this value.

xor(other){Long}

Returns the bitwise-XOR of this Long and the given one.

Name Type Description
`other` Long

the Long with which to XOR.

Returns:
bitwise-XOR of this and the other.