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. |
Members
-
staticLong.MAX_VALUELong
-
-
staticLong.MIN_VALUELong
-
-
staticLong.NEG_ONELong
-
-
staticLong.ONELong
-
-
staticLong.ZEROLong
-
Methods
-
staticLong.fromBigInt(value){Long}
-
Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.
Name Type Description value
bigint The number in question
Returns:
corresponding Long value
-
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.
-
staticLong.fromString(str, opt_radix){Long}
-
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.
-
add(other){Long}
-
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.
-
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.
-
toBigInt()
-
Converts the Long to a BigInt (arbitrary precision).
-
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.
-
toString(opt_radix){string}
-
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.