Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК инфс лек.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.37 Mб
Скачать

Шестнадцатиричная система счисления (h)

Используются символы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. (А = 10, В = 11, С = 12, D = 13, Е = 14, F = 15)

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

Преобразование двоичных чисел в 16-ные осуществляется по правилам, аналогичным для преобразования их в восьмеричные. Для этого биты целой и дробной частей влево и вправо от запятой группируются по четыре.

Пример.

Представить шестнадцатеричным эквивалентом:

10101011111101 B => 25375 O => 2AFD H

Двоичный код, разбитый на тетрады

0010

1010

1111

1101

шестнадцатеричный код

2

А

F

D

11000111.10101 B=>307.52 O => C7.A8 H

Двоичный код, разбитый на тетрады

1100

0111

1010

1000 добавлены нули в конце дробной части

шестнадцатеричный код

С

7

A

8

Целая часть

Дробная часть

Следует помнить, что 16-ные и 8-ные числа - это только способ представления двоичных чисел, которыми фактически оперирует микропроцессор.

Простота соотношения между 16 и 2 формами представления чисел – причина значительно большей распространенности 16 с.с.

Информационно–логические основы построения эвм Формы представления чисел

В вычислительных машинах применяются две формы представления двоичных чисел:

  • естественная форма или форма с фиксированной запятой (точкой);

  • нормальная форма или форма с плавающей запятой (точкой)

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

0,25; -10,44; +0,9781.

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

Пример: Диапазон чисел (N) в системе счисления с основанием Р при наличии m разрядов в целой части и S разрядов в дробной (без учета знака числа) будет:

P-S ≤ N ≤ Рm - Р-S

При р=2, m=10 и S=6 0,015 ≤ N ≤ 1024.

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

В современных ЭВМ естественная форма используется только для целых чисел.

Пример.

В десятичной системе счисления имеются 5 разрядов в целой части числа (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, запи­санные в такую разрядную сетку, имеют вид: +00721,35500; +00000,00328; -0301,20260.

С плавающей запятой каждое число изображается в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая— порядком, причем абсолют­ная величина мантиссы должна быть меньше 1, а порядок — целым числом. В общем виде число в форме с плавающей запятой может быть представлено так: Х =±М *p±К (Число Х называется нормализованным, если оно представлено в таком виде)

Главное достоинство: автоматическое масштабирование числа на каждом этапе обработки. Это универсальная форма записи всех чисел, кроме целых (Integer, Word, Byte).

М – при неравенстве 0 мантисса равна: 0.1≤ |М| < 1( первая цифра мантиссы после запятой - ≠0) , К-порядок, целое положительно число, p – основание системы счисления.

Пример: -123410=-0, 1234*104; 0,003=0,3*10-2

При нормализации происходит разделение числа на 4 составляющих: знак числа, мантисса, знак порядка, порядок.

Для произвольной системы счисления.

Хр =± Мр* р±К , Р-1 ≤ М< 1 r, где M мантисса числа, К — порядок числа (К— целое число);

Р основание системы счисления.

Например: для р=2, Х= -101,012 = -0,10101*211(2) ,

-0,10101(2) – мантисса, 11(2) –порядок, 2 – основание системы счисления

Пример 20.

Приведенные в предыдущем примере числа в нормальной форме запишутся так:

+0,721355*103 ; +0,328*10)-3 ; -0,103012026*105.

Нормальная форма представления имеет огромный диапазон отображения чисел и яв­ляется основной в современных ЭВМ.

Знак числа обычно кодируется двоичной цифрой, при этом

  • код 0 означает знак "+",

  • код 1 — знак "-".

Двоично-десятичная система счисления получила большое распространение в современных ЭВМ ввиду легкости перевода в десятичную систему и обратно. Она исполь­зуется там, где основное внимание уделяется не простоте технического построения маши­ны, а удобству работы пользователя.

В этой системе счисления все десятичные цифры отдельно кодируются четырьмя двоичными цифрами и в таком виде записывают­ся последовательно друг за другом.

Пример

Десятичное число 9703 в двоично-десятичной системе выглядит так:

1001

0111

0000

0011

Последовательность нескольких битов или байтов часто называют полем данных (Информатика: учебник / под ред. Н.В. Макаровой. — 3-е перераб. изд. — М.: Финансы и статистика, 2006.).

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

В ПК могут обрабатываться поля постоянной и переменной длины.

Поля постоянной длины:

  • слово — 2 байта

  • двойное слово — 4 байта

  • полуслово — 1 байт

  • расширенное слово — 8 байт

  • слово длиной 10 байт — 10 байт

Числа с фиксированной запятой чаще всего имеют формат слова и полуслова, числа с плавающей запятой — формат двойного и расширенного слова.

Поля переменной длины могут иметь любой размер от 0 до 256 байт, но обя­зательно равный целому числу байтов.

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

1. целые положительные числа (без знака)

2. целые со знаком

3. вещественные нормализованные числа.

Целые числа без знака.

Память в компьютере имеет байтовую структуру. Целые без знака обычно занимают один, или два байта (это комбинация связанных соседних ячеек, обрабатываемая совместно, называется машинным словом). В однобайтовом формате они могут принимать значения в диапазоне от 0 до 255, в двухбайтовом от 0 до 65535. Здесь попытка представить в байтовом формате число 258 будет интерпретироваться как ошибка. В машинном слове целые числа без знака представляются в своем двоичном виде.

Пример:

7210=10010002

 в байтовом формате:

 7

6 

5 

4 

3 

2 

1 

0 

0

1

0

0

1

0

0

0

в двухбайтовом:

 15

14 

13

12 

11 

10 

9

8

7

6

5

4 

3

2

1

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

Над целыми числами определены операции сложения (по умножения).

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

Используются три формы записи целых чисел со знаком: прямой код, дополнительный код, обратный код и смещенный код.

 Прямой код

При кодировании прямым n-разрядным двоичным кодом один разряд (как правило, самый старший) отводится для знака числа. Остальные n-1 разрядов - для значащих цифр. Значение знакового разряда равно 0 для положительных чисел, 1 - для отрицательных.

 

Пример: 1 = 0000 0001,-1 = 1000 0001.

Для прямого кода справедливо следующее соотношение:

n-2

А10=(-1)а (зн)∑ ai 2i,

i =0

где n-разрядность кода, а (зн) - значение знакового разряда. Например: если разрядность кода равна 4, то

1101 = (-1)1[1*20+0*21+1*22]=-5

Обратный код

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

Пример: число: -1, модуль 00000001, обратный код 11111110

Для обратного кода справедливо следующее соотношение:

n-разрядность машинного слова, aзн =0 для положительных чисел, aзн =1 для отрицательных чисел.

 1010 = 1*(-23+1)+[0x20+1x21+0x22]= -7+2=-5

Дополнительный код

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

I вариант.

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

610=01102

-610=10102

II вариант.

Дополнительный код = логическое дополнение (все биты инвертированы)+1

-610=10012+1

=10102

Для дополнительного кода справедливо следующее соотношение:

г де n-разрядность машинного слова, aзн =0 для положительных чисел, aзн =1 для отрицательных чисел.

Пример Структурной записи числа -193(10) = -11000001(2) в разрядной сетке ПК.

Число с фиксированной запятой формата слово со знаком:

Знак числа

величина числа

N разряда

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Число в пр. коде

1

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

Обр.код

1

1

1

1

1

1

1

1

0

0

1

1

1

1

1

0

Доп. код

1

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

Смещенный код (с избытком)

Выбирается длина разрядной сетки — n и записываются последовательно все возможные кодовые комбинации в обычной двоичной системе счисления. Затем кодовая комбинация с единицей в старшем разряде, имеющая значение 2n-1, выбирается для представления числа 0. Все последующие комбинации с единицей в старшем разряде будут представлять числа 1, 2, 3,... соответственно, а предыдущие комбинации в обратном порядке — числа -1,-2, -3,... .

Номер кодовой комбинации

Код с избытком 4

Десятичн. значение

7

111

3

6

110

2

5

101

1

4

100

0

3

011

-1

2

010

-2

1

001

-3

0

000

-4

Вещественные числа

Строгие отношения между вещественными числами превращаются в нестрогие для их компьютерных представителей

Результаты вычислений будут заведомо содержать погрешности

Формат представления вещественных чисел

n-1

n-2

m

m-1

2

1

0

Знак мантиссы

Смещенный порядок

Мантисса

Вещественные числа в компьютерах представляются в нормализованном виде, как правило, в трех форматах – одинарном (32), двойном (64) и расширенном (80 разрядов).

Число с плавающей запятой формата двойное слово

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

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от ноля числа до наибольшего числа, представимого в машине при заданном формате.

Нормализованное число одинарной точности, представленное в формате с плавающей запятой, записывается в память следующим образом: знак числа (знак мантиссы) - в бите 15 первого слова (0 - для положительных и 1 - для отрицательных чисел); порядок размещается в битах 7 -14 первого слова, а мантисса занимает остальные 23 бита в двух словах.

Упрощенное представление : 31 разряд- знак мантиссы, с 23-30 разряда смещенный порядок и с 22 по 0 разряды – мантисса.

Пример

Нормализуем число для выделения мантиссы и порядка

-11000001 B= – 1,1000001(2)* 2(10)^7(10) .

Здесь мантисса (M): –1,1000001; порядок P :–111(2); Смещенный порядок (Смp) = 7 + 127(10) = =134(10) (Смещенный порядок = P+ 127; 127 – смещение для чисел с одинарной точностью)

Знак числа

Смещенный порядок Смp =7(10)+ 127(10) =134(10) =10000110(2)

Мантисса (M)– 0,11000001

N разряда

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

1

0

Число

1

1

0

0

0

0

1

1

0

1

0

0

0

0

0

1

0

0

0

С

8

С

1

С8С10000 H – шестнадцатеричная форма внутреннего представления числа в формате с плавающей точкой (запятой) с одинарной точностью.

Арифметические операции с вещественными числами.

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

1.      Сложение. Пусть имеется два числа X1=M1*10k(1) и X2=M2*10k(2).

Для их сложения:

а. Δk=| k1-k2 |

b. если k1 > k2 , то M=M1 + M2 10 -Δk k=k1 ,

с. если 10-1 < =М< 1, то вывод результата в виде M *10k

иначе предварительная нормализация.

 Пример:

Х1=0.87654 * 101, Х2=0.94567*102. Пусть под запись мантиссы отводится 5 разрядов.

а. Δk= 1, k1<k2 ,следовательно, k=k2=2 (уравняли порядки)

b. мантиссу числа X1 сдвигаем на один разряд влево (пропадет 4)

с. новая мантисса равна 0,94567+0,08765=1,03332

а. мантисса вышла за допустимый интервал (она >1). Нормализуя, получим мантиссу 0,10333 (теряем 2) и порядок увеличиваем на 1. В итоге получаем Х=0,10333*103 , а точный результат равен 103,3324.

 2. Вычитание сводится к сложению с дополнительным кодом.

3. Умножение производится по правилу - мантиссы перемножаются, а порядки складываются. Если нужно, то полученное число нормализуется.

4. Деление производится по правилу - мантиссы делятся (делимое на делитель), а порядки вычитаются (порядок делителя из порядка делимого). Если нужно, то полученное число нормализуется.

Для целых со знаком определены операции

1. Сложение. Алгоритм аналогичен алгоритму сложения двоичных чисел, но все коды, включая результат операции, будут одинаковой длинны. То есть, если в результате + появился дополнительный бит слева, то он будет отсечен. Именно поэтому 0111+1011=(1) 0010.

2.    Вычитание. Оно как таковое здесь не присутствует, т.к. сводиться к сложению с дополнительным кодом: 710-510=710+(-510)=01112+10112=0010=210

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

Проблема переполнения:

Она вытекает из ограничения на размер чисел, представимым данным количеством битов. [Например, в 3-битовом представлении в двоичном дополнительном коде нет записи для числа 4 => сложим 2+2 и не получим правильного ответа]. Такая ошибка называется переполнением.

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

·  складываются два положительных числа, а результат «- ».

·  складываются два отрицательных числа, а результат «+».

Это нужно знать, и при программировании об этом помнить. Иначе может быть серьезная ошибка.

История: 19.09.1989 компьютерная система в госпитале США заметила ошибку после долгих лет надежной работы. Из-за того, что это был 32768-ым днем после 1.01.1900 (раньше был 16-битовый код, то есть максимум 32768)

3. Операция умножения. При ней число из дополнительного кода переводиться в прямой, перемножаются всегда положительные числа, а знаковый бит будет содержать 0, если знаки чисел одинаковы и 1 в противном случае. Умножение производится по правилу – мантиссы перемножаются, а порядки складываются. Если нужно, то полученное число нормализуется.

4.      Деление. Над множеством целых чисел со знаком эта операция не определена. Но допустима операция целочисленного деления. Перевод в дополнительный код происходит автоматически при вводе чисел, в таком виде они хранятся в ОЗУ и участвуют в арифметических операциях. Деление производится по правилу – мантиссы делятся (делимое на делитель), а порядки вычитаются (порядок делителя из порядка делимого). Если нужно, то полученное число нормализуется

Двоично-десятичные кодированные числа

Двоично-кодированные десятичные числа могут быть представлены в ПК полями переменной длины в так называемых упакованном и распакованном форматах.

В упакованном формате для каждой десятичной цифры отводится по 4 дво­ичных разряда (полбайта), при этом знак числа кодируется в крайнем правом полубайте числа

(1100 — знак "+" и 1101 — знак "-").

Структура поля упакованного формата:

Цф

Цф

...

Цф

Знак

Здесь и далее: Цф — цифра. Знак — знак числа

Упакованный формат используется обычно в ПК при выполнении операций сложения и вычитания двоично-десятичных чисел.

Символ 0 код ASCII 48 (10) – 0011 0000 (2)

1 49 0011 0001 …

В распакованном формате для каждой десятичной цифры отводится по це­лому байту, при этом старшие полубайты (зона) каждого байта (кроме самого младшего) в ПК заполняются кодом 0011 (в соответствии с ASCII-кодом), а в младших (левых) полубай­тах обычным образом кодируются десятичные цифры. Старший полубайт (зона) самого младшего (правого) байта используется для кодирования знака числа.

Структура поля распакованного формата:

Зона

Цф

Зона

Цф

...

Зона

Цф

Знак

Цф

Распакованный формат используется в ПК при вводе-выводе информации в ПК, Упакованный – для сокращения кода при передаче цифровой информации по компьютерной сети, а также при выполнении операций умножения и деления двоично-десятичных чисел.

Пример 23. Число -193(10) = -000110010011 (2) в ПК будет представлено:

0001

1001

0011

1101

1

9

3

-


в упакованном формате —

0011

0001

0011

1001

1101

0011

1

9

-

3

в распакованном формате —