Модели и структуры данных



         

Целые типы - часть 2


Например, для числа -33 в формате integer: 1000000000100001 прямой код 0111111111011110 обратный код +_______________1 1111111111011111 дополнительный код

Для положительных чисел прямой, обратный и дополнительный коды одинаковы. Аналогично представляются целые числа в формате shortint, longint, comp.

При разработке программ на этапе выбора типа данных важно знать диапазон целых величин, которые могут храниться в n разрядах памяти. В соответствии с алгоритмом преобразования двоичных чисел в десятичные, формула суммирования для n разрядов имеет вид:

n-1 2^0 + 2^1 + 2^3 + ... + 2^(n-1), или СУММА (2^i) = 2^n - 1. i=0

При n-битовом хранении числа в дополнительном коде первый бит выражает знак целого числа. Поэтому положительные числа представляются в диапазоне от 0 до 1*2^0 + 1*2^1 +...+ 1*2^(n-2) или от 0 до 2^(n-1) - 1. Все другие конфигурации битов выражают отрицательные числа в диапазоне от -2^(n-1) до -1. Таким образом, можно сказать, что число N может храниться в n разрядах памяти, если его значение находится в диапазоне:

-2^(n-1)

Тип Диапазон значений Машинное представление
shortint -128..127 8 бит, со знаком
integer -32768..32767 16 бит, со знаком
longint -2147483648..2147483647 32 бита, со знаком
byte 0..255 8 бит, без знака
word 0..65535 16 бит, без знака
comp -2^63+1..2^63-1 64 бита, со знаком

Таблица 2.1

Иными словами, диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать 1, 2 или 4 байта. В таблице 2.1 приводится перечень целых типов, размер памяти для их внутреннего представления в битах, диапазон возможных значений.

Машинное представление беззнаковых типов.

К беззнаковым типам в PASCAL относятся типы BYTE и WORD.

Формат машинного представления чисел типа BYTE приведен на рис 2.2. а).

Например: 1). Машинное представление числа 45: 45=2^5+2^3+2^2+2^0 = 00101101 2). Машинное представление границ диапазона допустимых значений чисел 0 и 255: 0: 00000000; 255: 11111111.



Содержание  Назад  Вперед