Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Максимов_электронный_учебник_текст.doc
Скачиваний:
42
Добавлен:
01.06.2015
Размер:
3.24 Mб
Скачать

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

В языке Си++ используются константы, представленные в десятичной, восьмеричной и шестнадцатеричной системах счисления. Для понимания того, как выполняются некоторые операции языка Си++, необходимо уметь переводить числа из одной системы счисления в другую. Поэтому остановимся кратко на способах представления чисел в разных системах счисления и перевода их из одной системы в другую. В табл. 1 показано представление чисел от 0 до 16 в разных системах счисления.

Таблица 1.1

Представление чисел от 0 до 16 в разных системах счисления

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

Десятичная

Двоичная

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

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

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

Любая константа N c наперёд заданной точностью может быть представлена в позиционной системе счисления с основанием D в следующем виде (будем рассматривать только целые и положительные D):

, (1.1)

где  возможные цифры (0D-1). Для шестнадцатеричной системы счисления (D = 16) возможными цифрами будут 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.

Число k указывает местоположение запятой. Если k  0, то число N дробное, если 0<k<n, то число N смешанное, если k>n , то число N целое. Величина n определяет требуемую точность представления числа.

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

. (1.2)

Если N – число дробное или смешанное, отделяем запятой целую часть от дробной. Например, число две тысячи четыреста двадцать пять можно записать в десятичной, двоичной, восьмеричной и шестнадцатеричной системе в виде формы (1.1) и (1.2) так:

Исторически так сложилось, что в обиходе используется десятичная система счисления, но с появлением вычислительных машин при их программировании стало удобным применять двоичную и шестнадцатеричную систему счислений. Это в первую очередь связано с тем, что элементарная ячейка компьютера бит может находиться только в двух состояниях 0 или 1. Поэтому, двоичное число, например 100101111001 (2425), сразу характеризует, сколько бит (в данном случае 12) необходимо, чтобы хранить число 2425 в памяти компьютера, и в каком состоянии (0 или 1) они должны находиться. Но двоичное число достаточно громоздко, мало того, память ЭВМ организована так, что адресуются не отдельные биты, а совокупность восьми бит называемых байтом. Эта кратность восьми предопределило выбор шестнадцатеричной системы как компактного способа записи констант при программировании.

Поясним сказанное на примере. В одном байте (8 бит) может хранится двоичное число лежащее в диапазоне от 00000000 до 11111111 (от 0 до 255) или в шестнадцатеричной форме от 00 до FF. Переход от двоичной к шестнадцатеричной системе и обратно можно выполнить очень просто не прибегая к аналитическим выражениям. Для этого необходимо мысленно разбить двоичное число на группы по четыре разряда и поставить каждой группе соответствующее шестнадцатеричное число из табл. 1.1.

Примеры:

1111 1111 = F F;

0101 1100 = 5 C;

00 1001 0111 1001 = 0 9 7 9.

Аналогично переход из шестнадцатеричной системы в двоичную можно осуществить просто подставляя вместо разрядов шестнадцатеричного числа соответствующие им по табл. 1.1 двоичные представления (1F = 0001 1111).

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

или

В результате получаем шестнадцатеричное число 2f6 и двоичное число 1011110110. Если применить описанное выше правило перехода от двоичной системы к шестнадцатеричной, то можно увидеть, что результаты совпали.

Чтобы перейти от двоичной или шестнадцатеричной системы к десятичной необходимо воспользоваться выражением (1.1). В случае с числом 758 переход будет выглядеть следующим образом:

Одну и ту же константу в языке Си++ можно записать в шестнадцатеричном, десятичном и восьмеричном виде. Возможность записать константу в двоичном виде в языке Си++ отсутствует.

2. ЛЕКСИЧЕСКИЕ ОСНОВЫ ЯЗЫКА Си++