Чет про программирование / 2) Целые числа в памяти
.docxЦелые числа в памяти ПК
Целые числа являются простейшими числовыми данными, с которыми оперирует ЭВМ. Для целых чисел существуют два представления: беззнаковое (только для неотрицательных целых чисел) и со знаком. Очевидно, что отрицательные числа можно представлять только в знаковом виде. Для беззнакового представления все разряды ячейки отводятся под представление самого числа. Например, в байте (8 бит) можно представить беззнаковые числа от 0 до 255. Поэтому, если известно, что числовая величина является неотрицательной, то выгоднее рассматривать её как беззнаковую. Для представления со знаком самый старший (левый) бит отводится под знак числа, остальные разряды - под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное, то 1. Например, в байте можно представить знаковые числа от -128 до 127.
Однако для представления отрицательных чисел в памяти компьютера используется так называемый дополнительный код. Дополнительный код числа – это дополнение этого числа до степени 2. Получить дополнительный код можно следующим образом:
-
Записать двоичное представление числа
-
Записать обратный код числа, т.е. инвертировать значения разрядов
-
Прибавить к числу 1.
Почему отрицательные числа представляются в дополнительном коде? Дело в том, что в этом случае операция вычитания двух чисел сводится к сложению с дополнительным кодом вычитаемого, и процессору достаточно уметь лишь складывать числа.
В К-разрядной ячейке может храниться 2^к различных значений целых чисел.
-
Диапазон значений целых беззнаковых чисел: от 0 до 2к - 1 для 16-разрядной ячейки от 0 до 65535 для 8-разрядной ячейки от 0 до 255
-
Диапазон значений целых чисел со знаком: от -2к-1 до 2к-1-1 для 16-разрядной ячейки от -32768 до 32767 для 8-разрядной ячейки от -128 до 127
Целые числа в ЯП Паскаль
-
Byte: 1 Байт - беззнаковый
-
ShortInt: 1 Байт - знаковый
-
Word: 2 Байта - беззнаковый
-
SmallInt: 2 Байта - знаковый
-
LongWord: 4 Байта - беззнаковый
-
LongInt: 4 Байта – знаковый
-
Qword: 8 Байт - беззнаковый
-
Int64: 8 Байт - знаковый
Булев тип данных в Паскаль
-
Boolean – True/False, 0/1
Перечисляемый тип
Перечисляемый тип представляет собой ограниченную упорядоченную последовательность скалярных констант, составляющих данный тип. Значение каждой константы задается ее именем. Имена отдельных констант отделяются друг от друга запятыми, а вся совокупность констант, составляющих данный перечисляемый тип, заключается в круглые скобки.
Программист объединяет в одну группу в соответствии с каким-либо признаком всю совокупность значений, составляющих перечисляемый тип. Например, перечисляемый тип Rainbow (РАДУГА) объединяет скалярные значения RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET. Перечисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные значения RED, YELLOW, GREEN.
Перечисляемый тип описывается в разделе описания типов, например:
type
Rainbow = (RED, ORANGE, YELLOW,
GREEN, LIGHT_BLUE, BLUE, VIOLET);
Каждое значение является константой своего типа и может принадлежать только одному из перечисляемых типов, заданных в программе. Например, перечисляемый тип Traffic_Light не может быть определен в одной программе с типом Rainbow, так как оба типа содержат одинаковые константы.
Описание переменных, принадлежащих к скалярным типам, которые объявлены в разделе описания типов, производится с помощью имен типов. Например:
type Traffic_Light= (RED, YELLOW, GREEN);
var Section: Traffic_Light;
Это означает, что переменная Section может принимать значения RED, YELLOW или GREEN.
Переменные перечисляемого типа могут быть описаны в разделе описания переменных, например:
var Section: (RED, YELLOW, GREEN);
При этом имена типов отсутствуют, а переменные определяются совокупностью значений, составляющих данный перечисляемый тип.
К переменным перечисляемого типа может быть применим оператор присваивания:
Section:= YELLOW;
Упорядоченная последовательность значений, составляющих перечисляемый тип, автоматически нумеруется, начиная с нуля и далее через единицу. Отсюда следует, что к перечисляемым переменным и константам могут быть применены операции отношения и стандартные функции Pred, Succ, Ord