Programming Ruby

The Pragmatic Programmer's Guide

Previous < Contents ^
Next >
class Bignum
Parent: Integer
Version: 1.6

Index:

Arithmetic operations Bit operations <=> [ ] size to_f to_i to_s


Bignum objects hold integers outside the range of Fixnum. Bignum objects are created automatically when integer calculations would otherwise overflow a Fixnum. When a calculation involving Bignum objects returns a result that will fit in a Fixnum, the result is automatically converted.

For the purposes of the bitwise operations and [], a Bignum is treated as if it were an infinite-length bitstring with 2's complement representation.

While Fixnum values are immediate, Bignum objects are not---assignment and parameter passing work with references to objects, not the objects themselves.

instance methods
Arithmetic operations

Performs various arithmetic operations on big.

big + aNumeric Addition
big -- aNumeric Subtraction
big * aNumeric Multiplication
big / aNumeric Division
big % aNumeric Modulo
big ** aNumeric Exponentiation

Bit operations

Performs various operations on the binary representations of the Bignum

~ big Invert bits
big | aNumeric Bitwise OR
big & aNumeric Bitwise AND
big ^ aNumeric Bitwise EXCLUSIVE OR
big << aNumeric Left-shift aNumeric bits
big >> aNumeric Right-shift aNumeric bits (with sign extension)

<=> big <=> aNumeric -> -1, 0, +1

Comparison---Returns -1, 0, or +1 depending on whether big is less than, equal to, or greater than aNumeric. This is the basis for the tests in Comparable.

[ ] big[ n ] -> 0, 1

Bit Reference---Returns the nth bit in the (assumed) binary representation of big, where big[0] is the least significant bit.

a = 9**15
50.downto(0) do |n|
  print a[n]
end
produces:
000101110110100000111000011110010100111100010111001

size big.size -> anInteger

Returns the number of bytes in the machine representation of big.

(256**10 - 1).size » 12
(256**20 - 1).size » 20
(256**40 - 1).size » 40

to_f big.to_f -> aFloat

Converts big to a Float. If big doesn't fit in a Float, the result is infinity.

to_i big.to_i -> big

Returns big.

to_s big.to_s -> aString

Returns a string containing the decimal representation of big.


Previous < Contents ^
Next >

Extracted from the book "Programming Ruby - The Pragmatic Programmer's Guide"
Copyright © 2000 Addison Wesley Longman, Inc. Released under the terms of the Open Publication License V1.0.
This reference is available for download.