Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тех прог.doc
Скачиваний:
38
Добавлен:
14.11.2019
Размер:
3.59 Mб
Скачать

Глава 13.Внутреннее представление чисел

13.1.Двоичная система счисления

Числа, символы, изображения, звуки кодируются в компьютерах в виде последовательностей битов, которые могут находиться в двух различных состояниях. Эти состояния удобно описывать двумя значениями 0 и 1 и считать цифрами, а последовательности этих цифр рассматривать как числа, представленные в двоичной системе счисления. Числа в двоичной системе счисления, так же, как и в десятичной, представляются последовательностью цифр (нулей и единиц), имеющих различный «вес», определяемый положением цифры в числе. В десятичной системе в качестве «веса» цифры используется степень 10, а в двоичной –  степень 2. Вес или старшинство цифры возрастает справа налево. В этом же направлении нумеруются разряды, причем нумерация начинается с 0. В табл.45 показаны цифры двоичного числа 01001110 и веса его цифр.

Таблица 46. Веса двоичных цифр

Номер разряда

7

6

5

4

3

2

1

0

Цифра

0

1

0

0

1

1

1

0

Вес цифры

27=128

26=64

25=32

24=16

23=8

22=4

21=2

20=1

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

01001110 = 0128 + 164 + 032 + 016 + 18 + 14 + 12 + 01 = 78.

Двоичные цифры числа получаются путем последовательного деления числа на 2 и нахождения остатков от деления, табл.47.

Таблица 48. Получение двоичных цифр

Частное

78/2 = 39

39/2 = 19

19/2 = 9

9/2 = 4

4/2 = 2

2/2 = 1

1 / 2 = 0

Остаток

78%2 = 0

39%2 = 1

19%2 = 1

9%2 = 1

4%2 = 0

2%2 = 0

1%2 = 1

Цифра

0

1

1

1

0

0

1

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

13.2.Беззнаковые целые

Беззнаковые целые типы имеют неотрицательные значения. Рассмотрим в качестве примера внутреннее представление типа unsigned char, представление остальных беззнаковых типов (unsigned short, unsigned int, unsigned long) аналогично. Под данные типа unsigned char отводится 1 байт памяти, состоящий из 8 битов или разрядов. Эти разряды могут образовывать

28 = 256

различных комбинаций из нулей и единиц:

00000000, 00000001, …, 11111111.

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

0, 1, 2, …, 255.

Наибольшее значение 255 равно:

28 – 1.

В общем случае, если n – количество двоичных разрядов, отводимых для беззнакового типа, то наибольшее значение этого типа равно:

2n – 1.

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

Рассмотрим сложение двух чисел 100 и 200 типа unsigned char. Найдем их двоичное представление в виде 8 двоичных цифр, рис.55, 56.

10010 = 011001002

Рис.55. Получение двоичного представления для числа 100

20010 = 110010002

Рис.56. Получение двоичного представления для числа 200

Обратим внимание, что двоичное представление для 200 получается из двоичного представления для 100 путем сдвига всех его разрядов влево на 1 позицию.

Выполним сложение этих числе столбиком:

+

0

1

1

0

0

1

0

0

1

1

0

0

1

0

0

0

1

0

0

1

0

1

1

0

0

Для старшей единицы не хватает разряда, поэтому она отбрасывается, в результате получаем:

10010 + 20010 = 001011002 = 32+8+4 = 4410.

Найдем теперь разность 100 - 200:

0

1

1

0

0

1

0

0

1

1

0

0

1

0

0

0

1

0

0

1

1

1

0

0

Здесь выполняется заем из несуществующего девятого разряда, в результате получается:

10010  – 20010 = 100111002 = 128 + 16 + 8 + 4 = 15610.