Class Long

A class representing a 64-bit integer

Remarks

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. Common constant values ZERO, ONE, NEG_ONE, etc. are found as static properties on this class.

Constructors

• 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.

Acceptable signatures are:

• Long(low, high, unsigned?)
• Long(bigint, unsigned?)
• Long(string, unsigned?)

Parameters

• `Optional`low: string | number | bigint

The low (signed) 32 bits of the long

• `Optional`high: number | boolean

The high (signed) 32 bits of the long

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Properties

high: number

The high 32 bits as a signed value.

low: number

The low 32 bits as a signed value.

unsigned: boolean

Whether unsigned or not.

MAX_UNSIGNED_VALUE: Long

Maximum unsigned value.

MAX_VALUE: Long

Maximum signed value.

MIN_VALUE: Long

Minimum signed value.

NEG_ONE: Long

Signed negative one.

ONE: Long

Signed one.

TWO_PWR_24: Long
UONE: Long

Unsigned one.

UZERO: Long

Unsigned zero.

ZERO: Long

Signed zero

Accessors

• get __isLong__(): boolean
• An indicator used to reliably determine if an object is a Long or not.

Returns boolean

• get _bsontype(): "Long"

Methods

• Returns the sum of this and the specified Long.

Returns Long

• Returns the sum of this and the specified Long.

Returns Long

Sum

• This is an alias of compare

Returns 0 | 1 | -1

• Compares this Long's value with the specified's.

Returns 0 | 1 | -1

0 if they are the same, 1 if the this is greater and -1 if the given one is greater

• This is an alias of divide

Returns Long

• Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.

Returns Long

Quotient

• This is an alias of equals

Returns boolean

• Tests if this Long's value equals the specified's.

Parameters

• other: string | number | Long | Timestamp

Other value

Returns boolean

• This is an alias of isZero

Returns boolean

• This is an alias of greaterThanOrEqual

Returns boolean

• Gets the high 32 bits as a signed integer.

Returns number

• Gets the high 32 bits as an unsigned integer.

Returns number

• Gets the low 32 bits as a signed integer.

Returns number

• Gets the low 32 bits as an unsigned integer.

Returns number

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

Returns number

• Tests if this Long's value is greater than the specified's.

Returns boolean

• Tests if this Long's value is greater than or equal the specified's.

Returns boolean

• This is an alias of greaterThan

Returns boolean

• This is an alias of greaterThanOrEqual

• Returns string

• Tests if this Long's value is even.

Returns boolean

• Tests if this Long's value is negative.

Returns boolean

• Tests if this Long's value is odd.

Returns boolean

• Tests if this Long's value is positive.

Returns boolean

• Tests if this Long's value equals zero.

Returns boolean

• This is an alias of lessThanOrEqual

Returns boolean

• Tests if this Long's value is less than the specified's.

Returns boolean

• Tests if this Long's value is less than or equal the specified's.

Returns boolean

• This is an alias of lessThan.

Returns boolean

• This is an alias of lessThanOrEqual

Returns boolean

• This is an alias of modulo

Returns Long

• Returns this Long modulo the specified.

Returns Long

• This is an alias of multiply

Returns Long

• Returns the product of this and the specified Long.

Multiplier

Returns Long

Product

• This is an alias of notEquals

Returns boolean

• This is an alias of negate

Returns Long

• Returns the Negation of this Long's value.

Returns Long

• This is an alias of notEquals

Returns boolean

• Returns the bitwise NOT of this Long.

Returns Long

• Tests if this Long's value differs from the specified's.

Returns boolean

• Returns the bitwise OR of this Long and the specified.

Returns Long

• This is an alias of modulo

Returns Long

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

Parameters

• numBits: number | Long

Number of bits

Returns Long

Shifted Long

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

Parameters

• numBits: number | Long

Number of bits

Returns Long

Shifted Long

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

Parameters

• numBits: number | Long

Number of bits

Returns Long

Shifted Long

• This is an alias of shiftLeft

Returns Long

• This is an alias of shiftRight

Returns Long

• This is an alias of shiftRightUnsigned

Returns Long

• This is an alias of shiftRightUnsigned

Returns Long

• This is an alias of subtract

Returns Long

• Returns the difference of this and the specified Long.

Subtrahend

Returns Long

Difference

• Converts the Long to a BigInt (arbitrary precision).

Returns bigint

• Converts this Long to its byte representation.

Parameters

• `Optional`le: boolean

Whether little or big endian, defaults to big endian

Returns number[]

Byte representation

• Converts this Long to its big endian byte representation.

Returns number[]

Big endian byte representation

• Converts this Long to its little endian byte representation.

Returns number[]

Little endian byte representation

Returns number | LongExtended

• Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.

Returns number

• Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).

Returns number

• Converts this Long to signed.

Returns Long

• Converts the Long to a string written in the specified radix.

Throws

RangeError If `radix` is out of range

• Converts this Long to unsigned.

Returns Long

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

Returns Long

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

Parameters

• value: bigint

The number in question

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

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

Parameters

• lowBits: number

The low 32 bits

• highBits: number

The high 32 bits

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

• Creates a Long from its byte representation.

Parameters

• bytes: number[]

Byte representation

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

• `Optional`le: boolean

Whether little or big endian, defaults to big endian

Returns Long

The corresponding Long value

• Creates a Long from its big endian byte representation.

Parameters

• bytes: number[]

Big endian byte representation

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

• Creates a Long from its little endian byte representation.

Parameters

• bytes: number[]

Little endian byte representation

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

Returns number | bigint | Long

• Returns a Long representing the given 32 bit integer value.

Parameters

• value: number

The 32 bit integer in question

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

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

Parameters

• value: number

The number in question

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

The corresponding Long value

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

Parameters

• str: string

The textual representation of the Long

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

• `Optional`radix: number

The radix in which the text is written (2-36), defaults to 10

Returns Long

The corresponding Long value

• Converts the specified value to a Long.

Parameters

• `Optional`unsigned: boolean

Whether unsigned or not, defaults to signed

Returns Long

• Tests if the specified object is a Long.

Returns value is Long

Generated using TypeDoc