Integer
Integer inherits from Number and defines no instance variables. It has subclasses LongInteger and SmallInteger.
Integers are the subset of real numbers that can be obtained by successively adding 1 or -1 to 0.
The VM operates with essentially two kinds of integers: SmallIntegers, which can range from -16384 to 16383, and LongIntegers, which can range from approx -2.1 billion to 2.1 billion.
SmallIntegers are encoded directly as immediate values and therefore take no space in heap memory.
LongIntegers are encoded as byte-indexable objects with 4 bytes each.
Arithmetic operations will automatically convert between SmallIntegers and LongIntegers as necessary, but overflowing the range of LongIntegers will cause "wrapping" of results---the same as in C and other languages.
In other words, it is not possible to have integers of a magnitude larger than about 2.1 billion without implementing some kind of LargeInteger class.
Methods defined in Integer:
Methods for accessing:
Methods for arithmetic:
- - number
- * number
- / number
- // number
- \\ number
- + number
- quo: number
- rem: number
Methods for bit manipulation:
- bitAnd: number
- bitAt: index
- bitOr: number
- bitShift: amount
- bitXor: number
Methods for comparing:
- ~= number
- < number
- <= number
- = number
- > number
- >= number
Methods for converting:
- asBoolean
- asDouble
- asFraction
- asInteger
- reduced
Methods for double dispatching:
- addToFraction: fraction
- coerce: number
probably never used, since integers are the lowest generality.
- divideIntoFraction: fraction
- divideIntoInteger: integer
- generality
- greaterThanFraction: fraction
- multiplyByFraction: fraction
- subtractFromFraction: fraction
Methods for flow control:
Methods for math functions:
- ceiling
- floor
- gcd: integer
Methods for predicates:
Methods for printing:
- printOn: stream
- printString
Pocket Smalltalk Documentation