Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Visual Basic.doc
Скачиваний:
105
Добавлен:
09.04.2015
Размер:
1.1 Mб
Скачать

Представление информации

Представление информации будет рассматриваться применительно к языку программирования Visual Basic (далее будет применяться сокращение VB).

Представление символов

Для записи символа отводится ячейка памяти длиной в 1 байт. Каждому символу в соответствии с таблицей ASCII поставлен в соответствие код из диапазона от 0 до 255, например:

Символ

Десятичный код

Содержание ячейки памяти

A

97

01100001

B

98

01100010

C

99

01100011

D

100

01100100

.

.

.

.

.

.

.

.

.

0

80

01010000

1

81

01010001

2

82

01010010

3

83

01010011

.

.

.

.

.

.

.

.

.

Пробел

32

00100000

Представление целых чисел (способ с фиксированной точкой)

Ячейка памяти может быть длиной 1, 2 или 4 байта.

Целые типы в VB

Название типа

Длина ячейки памяти в байтах

Диапазон значений

Byte (байт)

1

От 0 до 255

Integer (целый)

2

От -32 768 до 32 767

Long (длинный целый)

4

От -2 147 483 648 до 2 147 483 647

Пример представления целого числа 3 типа Byte (снизу указаны веса разрядов):

0

0

0

0

0

0

1

1

Значения разрядов

27

26

.

.

.

22

21

20

Веса разрядов

Следует сразу обратить внимание на принципиальное отличие символа от числа (например, символа 3 и числа 3). Несмотря на внешнее совпадение их изображений, они рассматриваются как разные объекты, между которыми нет никакой связи. Двоичный код символа 3 (01010011) отличается от двоичного кода числа 3 (00000011).

На запись знака не отведено места. Поэтому числа типа Byte могут быть только положительными. Максимальное значение, которое может быть записано по типу Byte равно 28 – 1 = 255.

Рассмотрим пример представления целого числа 21 типа Integer:

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

1

Знак

214

213

.

.

.

22

21

20

Знаковый разряд имеет значение 0 для положительных чисел и значение 1 для отрицательных чисел. Отрицательные числа записываются в так называемом дополнительном коде, но это выходит за рамки нашего рассмотрения.

Итак, один разряд отведен под знак и оставшиеся 15 разрядов – под значение числа. Максимальное значение абсолютного значения числа легко вычислить, для неотрицательных чисел это 215 – 1 = 32767, для отрицательных чисел это 215 = 32768.

Обратите внимание, на дробную часть не отведены разряды. Это понятно, ведь целые типы предназначены для данных принципиально принимающих только целочисленные значения.

Представление чисел с дробной частью (способ с плавающей точкой)

Для представления данных, которые имеют или могут иметь дробную часть, применяется способ с плавающей точкой.

Поясним идею этого метода в привычной для нас десятичной системе счисления. Любое действительное число может быть записано в научном формате, например:

123456000000000 = 1,23456*1014= 0,123456*1015 или

0,00000000123456 = 0,123456*10-8

Очевидно, что любое число zв десятичной системе счисления может быть записано в таком формате в виде:

z= + – 0,m* 10+ –p,

где:

m– дробная часть, называемая мантиссой;

p– целое число, называемое порядком.

Для мантиссы должно быть выполнено простое, но принципиально важное требование, заключающееся в том, что ее старший разряд не равен нулю.

Все это верно и для двоичной системы счисления:

z= + – 0,m* 2+ –p,

где z,mиpзаписаны в двоичной системе счисления.

Что нужно записать в ячейке памяти, чтобы было можно восстановить значение записанного числа? Очевидно, это четыре отдельных элемента: знак числа, мантисса, знак порядка и сам порядок.

Ячейка памяти для данных с дробной частью может быть длиной 4 или 8 байтов.

Типы для данных с дробной частью

Название типа

Длина ячейки памяти в байтах

Диапазон значений

Single

(с плавающей точкой обычной точности)

4

Абсолютное значение находится примерно в диапазоне от 1,4*10-45до 3,4*1038. Значение 0 не может быть представлено точно.

Точность 6 – 7 десятичных разрядов

Double

(с плавающей точкой двойной точности)

8

Абсолютное значение находится примерно в диапазоне от 4,9*10-324до 1,7*10308

Точность 14 – 15 десятичных разрядов

Посмотрим для примера, как могла бы быть использована для представления числа ячейка памяти длиной 4 байта.

0

0

0

0

0

1

0

1

0

1

0

1

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Знак порядка

Порядок

Знак числа

Мантисса

Байт

Байт

Байт

Байт

Один байт отведен под знак порядка и порядок. Оставшиеся три байта отведены под знак числа и мантиссу.

В качестве примера, посмотрим, как будет записано знакомое нам по прошлой лекции число 21,75.

21,75(10)= 10101,11(2) = 0, 1010111*25

Мантисса равна 1010111, порядок равен 5.

5(10)= 101(2)

На расположенном выше рисунке показано, как это число будет записано в ячейке памяти.

Абсолютное значение числа, которое может быть записано по способу с плавающей точкой, ограничено сверху и снизу.

Ограничение сверху происходит из за фиксированного числа разрядов разрядной сетки. Ограничение снизу возникает потому, что старший разряд мантиссы не может быть равен нулю.