Целые положительные числа можно представлять и в знаковых типах данных. В них самый левый разряд отводится на запись знака числа (0 - для положительных чисел и 1 - для отрицательных), остальные разряды заняты его двоичным представлением (младший разряд - в самом правом бите).
![]() |
Представление числа в привычной форме "знак" - "величина", при котором старший разряд ячейки отводится под знак, а остальные разряды ячейки под запись числа, называется прямым кодом. |
При наличии одинакового числа разрядов в знаковых и беззнаковых типах максимальное значение допустимого диапазона для знаковых типов будет практически в два раза меньше, чем для беззнаковых, так как один бит у первых отводится под знак числа. Например, максимальное значение для 8-разрядных знаковых типов равно 127 (27 - 1), для 16-разрядных - 32767 (215 - 1) и т.д. В остальном же правила представления целых положительных чисел остаются такими же, как и для беззнаковых типов.
Сформулируем алгоритм представления в компьютере целых положительных чисел:
Пример. Число 53 = 1101012 в 8-разрядном представлении имеет следующий вид:
0
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
Это же число в 16-разрядном представлении имеет следующийвид:
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
В обоих случаях неважно, в знаковом или беззнаковом типе записано число.
Для числа 200 = 110010002 представление в 8-разрядном знаковом типе невозможно (так как максимальное допустимое число в таком типе равно 127), а в беззнаковом однобайтовом опредставлении оно имеет следующий вид
1
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
Следует отметить, что разрядность процессора (число бит памяти, доступной для одновременной обработки процессором) на современных персональных компьютерах, не говоря уже о рабочих станциях и суперЭВМ, больше или равна четырем байтам. Поэтому поддержка компиляторами целых типов меньшего размера является данью прошлому: когда и разрядность процессора была меньше, и в результате использования одно-или двухбайтных типов удавалось экономить оперативную память при выполнении программы. В настоящее время использование четырехбайтных типов сделает программу, написанную для 32-разрядной операционной системы, более эффективной. Поэтому в языке Object Pascal наиболее употребимый целый тип Integer уже определен как четырехбайтный знаковый тип. Во многих компиляторах с языка С тип int также реализован как четырехбайтный.