Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 7

2.3. Перевод чисел из одной системы счисления в другую

[4, 5]

2.1.  Определения

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

2.2.  Арифметика

2.3.  Перевод чисел из одной системы счисления в другую

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

В общем случае для перевода чисел из десятичной системы счисления используется один из двух способов: разложение по степеням основания или деление.

Для перевода делением существует удобная форма записи.

Пример: перевести 123410 в двоичную систему счисления.

1234

617

0

308

1

154

0

77

0

38

1

19

0

9

1

4

1

2

0

1

0

0

1

Новая запись числа читается снизу вверх: 10011010010.

3.  Представление данных в ЭВМ

3.1. Целые неотрицательные числа

3.2. Целые отрицательные числа

3.3. Числа с плавающей точкой

3.4. Символы

3.5. Двоично-десятичное представление

3.1.  Целые неотрицательные числа

В большинстве ЭЦВМ, в том числе тех, где используются процессоры Intel, все числа хранятся в двоичном виде с фиксированным количеством разрядов.

В ЭЦВМ типа IBM PC основной единицей хранения всех типов данных является 8-битный байт. Кроме однобайтовых чисел используются также 2, 4, 8 и 10-байтные. По историческим причинам, 2-байтная единица информации называется словом, а 4-байтная — двойным словом. Такие названия сохранились со времён процессора Intel 8086, который, действительно, имел 2-байтное слово.

Целые неотрицательные числа представляются естественным образом: в виде последовательности битов. Единственная особенность состоит в том, что в оперативной памяти ЭЦВМ типа IBM PC, имеющей линейную структуру, разделённую на байты, младшие байты любой многобайтной единицы хранятся в младших адресах, старшие — в старших. Таким образом, 4-байтное число будет храниться в памяти следующим образом:

Биты

7

0

15

8

23

16

31

24

Байты памяти

1

2

3

4

При сложении целых чисел, если сумма не помещается в разрядной сетке, старший разряд теряется. Например, при сложении 1-байтных чисел 11111111 и 00000001 получится результат 00000000. Правда, при этом в регистре флагов процессора будет установлен флаг переноса (CF), о чём будем говорить позже.

3.2.  Целые отрицательные числа

Замечание. Конструкцией памяти ЭЦВМ типа IBM PC не предусмотрены какие-либо встроенные указатели типа данных, хранящихся в том или ином байте или регистре. Эти указатели должен предусматривать сам программист, если он не хочет держать эту информацию в голове. Процессор, взятый сам по себе, также не знает, 00110000 — это число 48, это код символа «0», или ещё какой-то другой код.

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

.

Следовательно, 11111111 и есть машинное представление числа –1. Заметим попутно, что ситуация, когда сумма знаковых чисел не помещается в разрядной сетке, называется переполнением.

Что нужно, чтобы из 00000001 получить 11111111? Нужно инвертировать все биты и добавить 1. Несложно доказать, что это правило верно в общем случае. Например, число, обратное к 01010101 есть 10101011.