Введение
как 31/32 бит применяется к сети и 31 бит маскам подсети В компьютерной архитектуре, 31 бит целых чисел, адреса памяти или другие единицы данных являются теми, которые имеют 31 бит шириной. В 1983 году IBM представила 31 битный адрес в архитектуре мейнфрейма System/370 XA в качестве обновления до 24 битного физического и виртуального, а также переходного 24 битного виртуального/26 битного физического адреса в System/370. Это улучшение позволило расширить адресные пространства в 128 раз, что позволило программам адресовать память более 16 МБ (называемую "выше строки").
In computer architecture, 31 bit integers, memory addresses, or other data units are those that are 31 bits wide. In 1983, IBM introduced 31 bit addressing in the System/370 XA mainframe architecture as an upgrade to the 24 bit physical and virtual, and transitional 24 bit virtual/26 bit physical, addressing in System/370. This enhancement allowed address spaces to be 128 times larger, permitting programs to address memory above 16 MB (referred to as "above the line").
31-битный компьютер
Librascope LGP 30 был первым компьютером, вышедшим из продажи. LGP 30 был впервые изготовлен в 1956 году по розничной цене 47 000 долларов, 47000.0 в 1956 году эквивалентно приблизительно <расчетной сумме> в последние годы. Это был двоичный, 31-битный словарный компьютер с 4096 слов в барабанной памяти. Было 32 битных местоположений на барабанное слово, но использовались только 31, что позволяло "восстановить магнитный поток в голове" в 32-битный момент. Количество вакуумных труб было сведено к минимуму за счет использования логики твердотельного диода, бит-серийной архитектуры и многократного использования каждого из 15 флип-флопов. LGP 30 обычно называли настольным компьютером. Его высота, ширина и глубина, не считая полки для пишущей машинки, составляли 33 на 44 на 26 дюймов (84 на 112 на 66 см). Он весил около 360 кг и был установлен на прочных роликах, которые облегчали перемещение устройства.
IBM мейнфрейм с 31-битным адресованием
В System/360, кроме 360/67, и ранних архитектур System/370, регистры общего назначения были 32 бита в ширину, машина выполняла 32 бит арифметические операции, и адреса всегда хранились в 32 битных словах, поэтому архитектура считалась 32-битной, но машины игнорировали верхние 8 бит адреса, в результате чего получались 24-битные адреса. В архитектуре System/370 XA и IBM Enterprise Systems Architecture, в дополнение к 24-битному режиму адресации для совместимости со старыми приложениями, существует 31-битный режим адресации, в котором для адресации игнорируется только бит высшего порядка (бит 0) в слове. Исключением является то, что инструкции по переключению режимов также используют бит 0. Существовали по крайней мере две причины, по которым IBM не внедрила 32-битный адресирование 360/67 Инструкции управления циклами BXH и BXLE сделали подписаны сравнения. Большая часть существующего программного обеспечения использовала бит 0 в качестве индикатора окончания списка. 64-битная z/архитектура также поддерживает 24-битный и 31-битный режимы адресации для совместимости с более старыми приложениями.
The loop control instructions BXH and BXLE did signed comparisons. Much of the existing software used bit 0 as an end of list indicator. The 64 bit z/Architecture also supports 24 bit and 31 bit addressing modes for compatibility with older applications.
Руби и Смоллток
Интерпретаторы для языков Ruby и Smalltalk используют самый низкий бит, чтобы определить, является ли значение неразборным целым числом или нет. Это означает, что на 32-битовых машинах (или 16-битовых машинах с 32-битовыми указателями) 31 битовые целые числа не вставляются в коробку. В случае переполнения, результат помещается в коробку, что означает, что он должен быть выделен и мусор собран. Таким образом, если у вас есть 32-битные значения, которые не вписываются в 31-битный формат, они будут очень неэффективными в этих интерпретаторах. То же самое с 63-битными неразборчивыми целыми числами на 64-битных компьютерах. Подобные конструкции можно найти в LISP и некоторых других языках, переменные которых могут принимать значения любого типа. В некоторых случаях была аппаратная поддержка для такого рода дизайна: см. Tagged architecture и Lisp machine.