class Bignum + Integer
クラスの継承リスト: Bignum < Integer < Numeric < Comparable < Object < Kernel < BasicObject
要約
多倍長整数のクラスです。 演算の結果が Fixnum の範囲内の時には 自動的に Fixnum に変換されます。
扱うことのできる大きさはメモリサイズだけによって制限されます。 ビット演算については 2 の補数表現の無限長 のビットストリングとみなすことができます。特に負の数は左側に無限に 1 のビットが立っているように操作できます。Float との混合に関しては、 変換時に桁落ちが生じる可能性があります。
破壊的な変更
Ruby の Bignum クラスは immutable です。 つまり、オブジェクト自体を破壊的に変更することはできません。 Fixnum も同様です。
インスタンスメソッド
self % other -> Fixnum | Bignum | Float
-
算術演算子。剰余を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self & other -> Fixnum | Bignum
-
ビット二項演算子。論理積を計算します。
- [PARAM] other:
- 数値
1 & 1 #=> 1 2 & 3 #=> 2
self * other -> Fixnum | Bignum | Float
-
算術演算子。積を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self ** other -> Fixnum | Bignum | Float
-
算術演算子。冪(べき乗)を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
p 2 ** 3 # => 8 p 2 ** 0 # => 1 p 0 ** 0 # => 1
self ** other -> Integer | Float | Rational
[redefined by rational]rpower(other) -> Integer | Float | Rational
[redefined by rational]-
冪(べき)乗を計算します。other が 0 以下の場合、計算結果を Rational オブジェクトで返します。
(1<<32).rpower(2) # => 18446744073709551616 (1<<32).rpower(-2) # => Rational(1, 18446744073709551616)
- [PARAM] other:
- 自身を other 乗する数
self + other -> Fixnum | Bignum | Float
-
算術演算子。和を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self - other -> Fixnum | Bignum | Float
-
算術演算子。差を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self / other -> Fixnum | Bignum | Float
-
算術演算子。商を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self / other
[redefined by mathn]-
[TODO]
Bignum#quo と同じ働きをします(有理数または整数を返します)。
self << bits -> Fixnum | Bignum
-
シフト演算子。bits だけビットを左にシフトします。
- [PARAM] bits:
- シフトさせるビット数
printf("%#b\n", 0b0101 << 1) #=> 0b1010 p -1 << 1 #=> -2
self <=> other -> Fixnum | nil
-
self と other を比較して、self が大きい時に正、 等しい時に 0、小さい時に負の整数を返します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- -1 か 0 か 1 のいずれか
1 <=> 2 #=> -1 1 <=> 1 #=> 0 2 <=> 1 #=> 1
self == other -> bool
-
比較演算子。数値として等しいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self と other が等しい場合 true を返します。 そうでなければ false を返します。
self >> bits -> Fixnum | Bignum
-
シフト演算子。bits だけビットを右にシフトします。
右シフトは、符号ビット(最上位ビット(MSB))が保持されます。 bitsが実数の場合、小数点以下を切り捨てた値でシフトします。
- [PARAM] bits:
- シフトさせるビット数
printf("%#b\n", 0b0101 >> 1) #=> 0b10 p -1 >> 1 #=> -1
self[nth] -> Fixnum
-
nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 1 を、そうでなければ 0 を返します。
- [PARAM] nth:
- 何ビット目を指すかの数値
- [RETURN]
- 1 か 0
self[nth]=bit (つまりビットの修正) がないのは、Numeric 関連クラスが immutable であるためです。
self ^ other -> Fixnum | Bignum
-
ビット二項演算子。排他的論理和を計算します。
- [PARAM] other:
- 数値
1 ^ 1 #=> 0 2 ^ 3 #=> 1
chr -> String
chr(encoding) -> String
-
与えられたエンコーディング encoding において self を文字コードと見た時、それに対応する一文字からなる文字列を返します。 引数無しで呼ばれた場合は self を US-ASCII、ASCII-8BIT、デフォルト内部エンコーディングの順で優先的に解釈します。
p 65.chr # => "A" p 0x79.chr.encoding # => #<Encoding:US_ASCII> p 0x80.chr.encoding # => #<Encoding:ASCII_8BIT> p 12354.chr Encoding::UTF_8 # => "あ" p 12354.chr Encoding::EUC_JP # => RangeError: invalid codepoint 0x3042 in EUC-JP p 12354.chr Encoding::ASCII_8BIT # => RangeError: 12354 out of char range p (2**32).chr # => RangeError: bignum out of char range
- [PARAM] encoding:
- エンコーディングを表すオブジェクト。Encoding::UTF_8、'shift_jis' など。
- [RETURN]
- 一文字からなる文字列
- [EXCEPTION] RangeError:
- self を与えられたエンコーディングで正しく解釈できない場合に発生します。
[SEE_ALSO] String#ord
denominator -> Integer
-
分母(常に1)を返します。
- [RETURN]
- 分母を返します。
[SEE_ALSO] Integer#numerator
downto(min) {|n| ... } -> self
downto(min) -> Enumerator
-
self から min まで 1 ずつ減らしながらブロックを繰り返し実行します。 self < min であれば何もしません。
- [PARAM] min:
- 数値
- [RETURN]
- self を返します。
[SEE_ALSO] Integer#upto, Numeric#step, Integer#times
even? -> bool
-
自身が偶数であれば真を返します。 そうでない場合は偽を返します。
gcd(n) -> Integer
-
自身と整数 n の最大公約数を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.gcd(2) # => 2 3.gcd(7) # => 1 3.gcd(-7) # => 1 ((1<<31)-1).gcd((1<<61)-1) # => 1
また、self や n が 0 だった場合は、0 ではない方の整数の絶対値を返します。
3.gcd(0) # => 3 0.gcd(-7) # => 7
[SEE_ALSO] Integer#lcm, Integer#gcdlcm
gcdlcm(n) -> [Integer]
-
自身と整数 n の最大公約数と最小公倍数の配列 [self.gcd(n), self.lcm(n)] を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.gcdlcm(2) # => [2, 2] 3.gcdlcm(-7) # => [1, 21] ((1<<31)-1).gcdlcm((1<<61)-1) # => [1, 4951760154835678088235319297]
[SEE_ALSO] Integer#gcd, Integer#lcm
integer? -> true
-
常に真を返します。
lcm(n) -> Integer
-
自身と整数 n の最小公倍数を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.lcm(2) # => 2 3.lcm(-7) # => 21 ((1<<31)-1).lcm((1<<61)-1) # => 4951760154835678088235319297
また、self や n が 0 だった場合は、0 を返します。
3.lcm(0) # => 0 0.lcm(-7) # => 0
[SEE_ALSO] Integer#gcd, Integer#gcdlcm
next -> Fixnum | Bignum
succ -> Fixnum | Bignum
-
self の次の整数を返します。
numerator -> Integer
-
分子(常に自身)を返します。
- [RETURN]
- 分子を返します。
[SEE_ALSO] Integer#denominator
odd? -> bool
-
自身が奇数であれば真を返します。 そうでない場合は偽を返します。
ord -> Integer
-
自身を返します。
10.ord #=> 10 # String#ord ?a.ord #=> 97
[SEE_ALSO] String#ord
pred -> Integer
-
self から -1 した値を返します。
1.pred #=> 0 (-1).pred #=> -2
quo(other) -> Rational
[redefined by rational]-
商を計算して計算結果を Rational オブジェクトで返します。
- [PARAM] other:
- 自身を割る数
例:
(1<<32).quo(2) # => Rational(2147483648, 1)
rationalize -> Rational
rationalize(eps) -> Rational
-
自身を Rational に変換します。
- [PARAM] eps:
- 許容する誤差
引数 eps は常に無視されます。
例:
2.rationalize # => (2/1) 2.rationalize(100) # => (2/1) 2.rationalize(0.1) # => (2/1)
size -> Fixnum
-
整数の実装上のサイズをバイト数で返します。
現在の実装では Fixnum は、sizeof(long) 固定(多くの 32 bit マシンで 4 バイト)、Bignumは、システム依存です。
p 1.size p 0x1_0000_0000.size # => 4 8
times {|n| ... } -> self
times -> Enumerator
-
self 回だけ繰り返します。 self が正の整数でない場合は何もしません。
またブロックパラメータには 0 から self - 1 までの数値が渡されます。
3.times { puts "Hello, World!" } # Hello, World! と3行続いて表示される。 0.times { puts "Hello, World!" } # 何も表示されない。 5.times {|n| print n } # 01234 と表示される。
[SEE_ALSO] Integer#upto, Integer#downto, Numeric#step
to_f -> Float
-
値を浮動小数点数(Float)に変換します。
to_i -> self
to_int -> self
-
self を返します。
to_r -> Rational
-
自身を Rational に変換します。
例:
1.to_r # => (1/1) (1<<64).to_r # => (18446744073709551616/1)
to_s -> String
to_s(base) -> String
-
整数を 10 進文字列表現に変換します。
引数を指定すれば、それを基数とした文字列表 現に変換します。
p 10.to_s(2) # => "1010" p 10.to_s(8) # => "12" p 10.to_s(16) # => "a" p 35.to_s(36) # => "z"
- [RETURN]
- 数値の文字列表現
- [PARAM] base:
- 基数となる 2 - 36 の数値。
- [EXCEPTION] ArgumentError:
- base に 2 - 36 以外の数値を指定した場合に発生します。
upto(max) {|n| ... } -> Fixnum | Bignum
upto(max) -> Enumerator
-
self から max まで 1 ずつ増やしながら繰り返します。 self > max であれば何もしません。
- [PARAM] max:
- 数値
- [RETURN]
- self を返します。
[SEE_ALSO] Integer#downto, Numeric#step, Integer#times
self | other -> Fixnum | Bignum
-
ビット二項演算子。論理和を計算します。
- [PARAM] other:
- 数値
1 | 1 #=> 1 2 | 3 #=> 3
~ -> Fixnum | Bignum
-
ビット演算子。否定を計算します。
~1 #=> -2 ~3 #=> -4 ~-4 #=> 3
- Ruby 1.9.3 リファレンスマニュアル
- はじめに
- コマンド
- Rubyの起動
- 環境変数
- Ruby言語仕様
- 組み込みライブラリ
- クラス
- Array
- BasicObject
- Bignum
- Binding
- Class
- Complex
- Data
- Dir
- Encoding
- Encoding::
Converter - Enumerator
- FalseClass
- Fiber
- File
- File::Stat
- Fixnum
- Float
- Hash
- IO
- Integer
- MatchData
- Method
- Module
- Mutex
- NilClass
- Numeric
- Object
- Proc
- Process::Status
- Random
- Range
- Rational
- Regexp
- String
- Struct
- Struct::Tms
- Symbol
- Thread
- ThreadGroup
- Time
- TrueClass
- UnboundMethod
- モジュール
- オブジェクト
- 例外クラス
- 組み込み関数
(Kernelモジュール関数) - 組み込み定数
(Kernel定数) - 組み込み特殊変数
- クラス
- 標準添付ライブラリ
- pack テンプレート文字列
- sprintf フォーマット
- Ruby用語集
- Rubyで使われる記号の意味
- 疑似BNFによるRubyの文法
- バージョン情報 / このリファレンスについて