Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_01_00_Predstavlenie_dannyh_LEC_rus.doc
Скачиваний:
1
Добавлен:
12.11.2019
Размер:
155.65 Кб
Скачать

C++: Лекция 1. Представление данных

Лекция 1.

Представление данных

План.

  1. Вступление

  2. Системы счисления.

  3. Представление чисел.

    1. Беззнаковые целые двоичные числа

    2. Целые числа со знаком

  4. Представление вещественных чисел.

  5. Шестнадцатеричные числа

  6. Представление символьных данных

Вступление

Прежде чем приступить к изучению языка, сна­чала нужно познакомиться со способами обработки и представления чисел.

Компьютер состоит из набора цифровых электронных схем, в которых различаются два логических состояния: включено (это состояние соответствует логической единице) и выключено (это состояние соответствует логическому нулю).

Чтобы не рисовать каждый раз внутренности ячейки, положение переключателей обозначают цифрами 0 или 1.

Попробуем подсчитать, сколько разных чисел способна вместить такая ячейка. Для этого вообразим ячейку, в которой всего один переключатель c двумя состояниями: 1 и 0 (ВЕРХ и НИЗ). Значит, в такой ячейке могут храниться два числа. Если теперь добавить к ячейке еще один переключатель, число ее состояний удвоится: теперь на каждое состояние первого переключателя приходится два состояния второго. Значит, в ячейке из двух переключателей всего 4 состояния, в ячейке из трех переключателей — 8 (для каждого из четырех состояний, в которых может находиться ячейка из двух переключателей, есть два состояния третьего переключателя), а в ячейке из восьми переключателей (битов: binary digit – двоичный разряд) число возможных состояний уже 2х2х2х2х2х2х2х2=256.

Значит, в ячейку из восьми бит можно записать числа от 0 до 255 (всего 256).

С помощью одного переключателя – бита (binary digit – двоичный разряд) можно закодировать только 2 числа: 0 или 1. С помощью 2 битов – 4 числа: 00, 01, 10, 11. В ячейку из восьми бит можно записать числа от 0 до 255 (всего 256).

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

Бит (разряд)

7

6

5

4

3

2

1

0

Значение

0

0

0

0

1

0

0

1

вес

27

26

25

24

23

22

21

20

Тогда двоичное число 00001001 можно представить в виде:

00001001 =0*27 + 0*26 +0*25 + 0*24 + 1*23 + 0*22 + 0*21 + 1*2°= 910

Таким образом, ячейки памяти выглядят как последовательность нулей и единиц, независимо от того, что в них находится: число или буква.

Системы счисления.

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

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

Например, в десятичной системе – это набор цифр от 0 до 9 (всего 10 цифр). Для представления разрядов шестнадцатеричного чис­ла используются цифры от 0 до 9 и буквы от А до F, которые соответствуют десятичным числам от 0 до 15.

Система исчисления

База

Используемые цифры

Двоичная

2

0 1

Восьмеричная

8

01234567

Десятичная

10

0123456789

Шестнадцатеричная

16

01234S6789ABCDEF

Представление чисел.

Двоичные целые числа могут быть знаковыми (положительные либо отрицательные) или беззнаковыми. При использовании специальных схем кодирования с помощью двоичных чисел могут быть представлены вещественные числа.

Беззнаковые целые двоичные числа

Каждый бит беззнакового целого двоичного числа – значащий. Его порядковый номер n, соответствует значению числа 2n.

Например,

1610 = 24

1610 = 1*24 + 0*23 + 0*22 + 0*21 + 0*2°= 10000.

1710 = 24 + 20 = 1*24 + 0*23 + 0*22 + 0*21 + 1*2°= 10001.

1810 = 24 + 21 = 1*24 + 0*23 + 0*22 + 1*21 + 0*2°= 10010.

И т.д.

В семействе процессоров Intel основной единицей хранения всех типов данных яв­ляется байт - 8 битов. Другие единицы хранения данных кратны байту: 2 байта (16 бит) , 4 байта (32 бита) и 8 бай­тов (64 байта).

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

Тип

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

Степени двойки

1 байт

0...255

0 ...(28-1)

2 байта

0...65 535

0 ...(216-l)

4 байта

0...4 294 967 295

0 ...(232-l)

8 байт

0... 18 446 744 073 709 551 615

0 ...(264-1)

Формула в общем виде: от 0 до 2n -1

Целые числа со знаком

Для того, чтобы понять, как в компьютере кодируются отрицательные числа, перейдем от настоящих 32-битовых чисел к «игрушечным» 4-битовым. Таки­ми числами гораздо проще оперировать, а то, что уда­лось понять на их примере, легко обобщить на любое число двоичных разрядов.

Итак, число, состоящее из 4 бит, может находить­ся в 24 = 16 различных состояниях, и его можно поделить пополам: 8 состояний (включая 0) будут «положи­тельными», 8 — «отрицательными».

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

С учетом сказанного в четырех битах могут умес­титься (вместе с нулем) такие положительные числа:

0

1

2

3

4

5

6

7

0000

0001

0010

0011

0100

0101

0110

0111

Целые числа со знаком могут быть как положительными, так и отрицательными. Знаковый разряд - старший бит числа. Если его значение равно 0, число положительное, 1 - отрицательное.

Получим отрицательное число из положи­тельного.

Дано:

Число 1 ( двоичное представление 0001).

Получить двоичное представление числа -1.

Разработка алгоритма решения .

1 + (-1) = 0.

Таким образом, к числу 1 надо прибавить такое число, чтобы в результате получить 0.

1111

+ 1

----

10000

Ре­зультат сложения - единица, но уже в пятом, несуществующем для 4-битовых чисел разряде (она отбрасывается). Т.о. в наших четырех битах окажутся нули, что и требуется. Т.о.

(0001 + х) +1=0

Какое число необходимо прибавить к любому числу, чтобы получить 1111?

Ответ - его инвертированное представление (нули заменяются единицами, а единицы нулями) получим:

0001 + 1110=1111.

Таким образом, для получения отрицательного чиса из положительного необходимо инвертировать его и прибавить 1.

Т. о. отрицательные числа будут ко­дироваться так, как показано в таблице.

-8

1000

-7

1001

-6

1010

-5

1011

-4

1100

-3

1101

-2

1110

-1

1111

У нас нет кода для число -8 т.к. для него не существует положительного числа. Ввосполь­зуемся тем, что сумма положительного числа и соответствующего отрицательного для числа, состоящего из четырех битов всегда равна 16. Например,

0001 + 1000 = 10000

Например, чтобы получить дво­ичный код для -7 можно представить в виде дво­ичного числа разность

16 - 7 = 1000 – 0111 = 10012 = 910.

Проверка:

7 + (-7) = 0111 + 1001= 10000 = 1610.

Теперь найдем эквивалент для числа -8:

Поступая с восьмеркой так же, как только что с семеркой, получим:

-8 = 16-8 = 8 = 1000

Полученный код для отрицательных чи­сел называется дополнительным, потому что отрица­тельное число получается дополнением положительно­го до 16.

Дополнение до шестнадцати справедливо только для 4-битов. Для чисел размером 8- 16- и 32-значения будут иными, но принцип сохранится.

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

Тип

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

Степени двойки

1 байт

-128...+ 127

-27...(27-1)

2 байта

-32 768...+32 767

-215...(215-l)

4 байта

-2 147 483 648... +2 147 483 647

-232...(232-1)

8 байт

-9 223 372 036 854 775 808...

+9 223 372 036 854 775 807

-263 … (263-1)

Формула в общем виде:

от 2n-1 до 2n-1 -1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]