1. ホーム
  2. ruby

[解決済み] ルビー最大整数

2022-02-11 05:46:59

質問内容

Rubyでシステムの最大整数を決定できるようにしたいのですが。誰かその方法、あるいは可能かどうか知っていますか?

どのように解決するのですか?

Rubyは整数がオーバーフローすると自動的に大整数クラスに変換するので、(実質的に)整数の大きさに制限はない。

マシンのサイズ、つまり64ビットか32ビットかを調べるのなら、私が見つけた ruby-forum.comのこのトリック :

machine_bytes = ['foo'].pack('p').size
machine_bits = machine_bytes * 8
machine_max_signed = 2**(machine_bits-1) - 1
machine_max_unsigned = 2**machine_bits - 1


Fixnumオブジェクト(1つのマシン語に格納できるほど小さな整数)のサイズを知りたい場合は、以下のようにします。 0.size でバイト数を取得します。32ビットビルドでは4であるべきだと思いますが、今すぐにはテストできません。また、最大のFixnumはどうやら 2**30 - 1 (または 2**62 - 1 これは、1ビットがオブジェクト参照ではなく、整数であることを示すために使用されるからです。