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 (целые числа, достаточно малые для хранения в одном машинном слове), вы можете вызвать 0.size
, чтобы получить количество байтов. Я предполагаю, что это должно быть 4 на 32-битных сборках, но я не могу проверить это сейчас. Кроме того, наибольшее значение Fixnum, по-видимому, 2**30 - 1
(или 2**62 - 1
), поскольку один бит используется для обозначения его как целого числа вместо ссылки на объект.