Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Razdel_3_Predstavlenie_i_obrabotka_chisel_v_kom...docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
107.43 Кб
Скачать

3Назовите алфавит двоичной, восьмеричной и шестнадцатеричной систем счисления

 Двоичная система счисления имеет набор цифр {0, 1}, р=2.Двоичная система счисления имеет особую значимость в информатике: внутреннее представление любой информации в компьютере является двоичным, т.е. описывается набором символов только из двух знаков 0 и 1. 

Шестнадцатеричная система счисления имеет набор цифр {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, p = 16. Для изображения чисел в шестнадцатеричной системе счисления требуются 16 цифр. Для обозначения первых десяти цифр используются цифры десятичной системы счисления, шесть остальных — первых шесть прописных букв латинского алфавита.

В восьмеричной системе их восемь: 0,1,2,3,4,5,6,7

4Сформулируйте правила перевода чисел из одной системы счисления в другу

1011011101 = 2 + 2 + 2 + 2 + 2 + 2 + 2 =

= 512 +128 + 64 + 16 + 8 + 4 + 1 = 733

23578 = (2·83)+(3·82)+(5·81)+(7·80) = 2·512 + 3·64 + 5·8 + 7·1 = 126310

F45ED23C16 = (15·167)+(4·166)+(5·165)+(14·164)+(13·163)+(2·162)+(3·161)+(12·160) = 409985490810

5Назовите форматы записи целых и вещественных чисел в памяти эвм.

Существуют два способа представления чисел в памяти ЭВМ. Они называются так: форма с фиксированной точкой и форма с плавающей точкой. Форма с фиксированной точкой применяется к целым числам, форма с плавающей точкой — к вещественным числам (целым и дробным). Под точкой здесь подразумевается знак-разделитель целой и дробной части числа.

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

Разберемся, как представляются отрицательные числа. Казалось бы, для этого достаточно заменить 0 на 1 в старшем (31-м) разряде ячейки памяти. Однако реально это делается несколько сложнее. Для представления отрицательных целых чисел используется дополнительный код.

 Дополнительным кодом двоичного числа X в N-разрядной ячейке является число, дополняющее его до значения 2.

Получить дополнительный код можно следующим путем:

  1. записать внутреннее представление положительного числа X;

  2. записать обратный код этого числа заменой во всех разрядах 0 на 1 и 1 на 0;

  3. к полученному числу прибавить 1.

Определим по этим правилам внутреннее представление числа -562810 в 32-разрядной ячейке. 

  1. 00000000

    00000000

    00010101

    1111110

11111111

11111111

11101010

00000011

11111111

11111111

11101010

00000100

Шестнадцатеричная форма результата:

FF FF ЕА 04.

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

Почему отрицательные числа представляются в дополнительном коде? Дело в том, что в этом случае операция вычитания двух чисел сводится к сложению с дополнительным кодом вычитаемого, и процессору достаточно уметь лишь складывать числа. В самом деле:

А - В = А + (-В).

Если значение (-В) будет иметь форму дополнительного кода, то в памяти ЭВМ получится правильный результат.

Проверим, действительно ли в ячейке памяти получится О в результате сложения числа 5628 с числом -5628 в форме дополнительного кода.

00000000 00000000 00010101 11111100 + 11111111 11111111 11101010 000000100 =

1 00000000 00000000 00000000 00000000

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

Двоичное 32-разрядное число 231 является «отрицательным самому себе». Получим его дополнительный код:

Определим по этим правилам внутреннее представление числа -562810 в 32-разрядной ячейке. 

  1. 10000000

    00000000

    00000000

    00000000

01111111

11111111

11111111

11111111

10000000

00000000

00000000

00000000

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

-231 = -2147483648.

Следовательно, диапазон представления целых чисел в 32-разрядном машинном слове:

-231 <= Х <= 231-1,

или

-2147483648 <= Х <= 2147483647.

В общем случае для N-разрядного машинного слова этот диапазон такой:

-2N-1 <= X <= 2N-1-1.

В современных компьютерах часто используется 16- разрядное представление целых чисел. В этом случае их диапазон следующий:

-215 <= Х <= 215-1,

или

-32768 <= Х <= 32767.

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

Вещественные числа. Числовые величины, которые могут принимать любые значения (целые и дробные) называются вещественными числами. В математике также используется термин «действительные числа». Решение большинства математических задач сводится к вычислениям с веществен-ными числами. Как же такие числа представляются в памяти компьютера?

 Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.

Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком:

R = m * рn

Например, число 25,324 можно записать в таком виде: 0.25324х102. Здесь m=0.25324 — мантисса, n=2 — порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка».

Однако справедливы и следующие равенства:

25,324 = 2,5324*101 = 0,0025324*104 = 2532,4*102 и т.п.

Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализован-ном представлении должна удовлетворять условию:

0,1p <= m < 1p.

Иначе говоря, мантисса меньше единицы и первая значащая цифра — не ноль. Значит для рассмотренного числа нормализованным представлением будет: 0.25324 * 102. В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим один из возможных. Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:

± машинный порядок

        М А

Н Т И С

С А     

     1-й байт                    2-й байт    3-й байт   4-й байт  

В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие:

Машинный порядок

0

1

2

3

...

64

65

...

125

126

127

Математический порядок

-64

-63

-62

-61

...

0

1

...

61

62

63

Если обозначить машинный порядок Мр, а математический — р, то связь между ними ыразится такой формулой:

Мр = р + 64.

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

Полученная формула записана в десятичной системе. Поскольку 6410=4016 (проверьте!), то в шестнадцатеричной системе формула примет вид:

Мр16 = р16 + 4016

И, наконец, в двоичной системе:

Мр2 = р2+100 00002

Теперь мы можем записать внутреннее представление числа 25,324 в форме с плавающей точкой.

  1. Переведем его в двоичную систему счисления с 24 значащими цифрами.

25,32410= 11001,01010010111100011012

  1. Запишем в форме нормализованного двоичного числа с плавающей точкой:

0,110010101001011110001101*10101

Здесь мантисса, основание системы счисления (210=102) и порядок (510=1012)записаны в двоичной системе.

  1. Вычислим машинный порядок.

Мр2 = 101 + 100 0000 = 100 0101

  1. Запишем представление числа в ячейке памяти.

01000101

11001010

10010111

10001101

Это и есть искомый результат. Его можно переписать в более компактной шестнадцатеричной форме:

45

CA

97

8D

Для того, чтобы получить внутреннее представление отрицательного числа -25,324,достаточно в полученном выше коде заменить в разряде знака числа 0 на 1.

Получим:

11000101

11001010

10010111

10001101

А в шестнадцатеричной форме:

C5

CA

97

8D

Никакого инвертирования, как для отрицательных чисел с фиксированной точкой, здесь не происходит.

Рассмотрим, наконец, вопрос о диапазоне чисел, представимых в форме с плавающей точкой. Очевидно, положительные и отрицательные числа расположены симметрично относительно нуля. Следовательно, максимальное и минимальное числа равны между собой по модулю: Rmax = |Rmin|. Наименьшее по абсолютной величине число равно нулю. Чему же равно Rmax? Это число с самой большой мантиссой и самым большим порядком:

0,111111111111111111111111*1021111111

Если перевести в десятичную систему, то получится

Rmax = (1 - 2-24) * 264 = 1019

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

(1/2) * 2-64=2-66.

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

Как известно из математики, множество действительных чисел бесконечно и непрерывно. Множество же вещественных чисел, представимых в памяти ЭВМ в форме с плавающей точкой, является ограниченным и дискретным. Каждое следующее значение получается прибавлением к мантиссе предыдущего единицы в последнем (24-м) разряде. Количество вещественных чисел, точно представимых в па-мяти машины, вычисляется по формуле:

N = 2t * ( U - L+ 1) + 1.

Здесь t — количество двоичных разрядов мантиссы; U — максимальное значение математического порядка; L — минимальное значение порядка. Для рассмотренного нами варианта (t = 24, U = 63, L = -64) получается:

N = 2 146 683 548.

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

6Назовите правила построение прямого, обратного, дополнительного и модифицированного кодов +++++

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

Согласно определению, функция кодирования чисел в прямом коде правильных дробей вида: А=азн a-1 a-2... а-n запишется следующим образом:

Величина А будет определяться в прямом коде следующим выражением:

при этом знаковому разряду не приписывается никакого веса. Очевидно, что диапазон изменения машинных изображений для прямого кода двоичной дроби лежит в пределах:

.

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

В прямом коде нуль имеет два значения: положительное 0,000..0 и отрицательное 1,000...0. Обычно в ЭВМ используется положительный нуль, но в процессе вычислений может возникнуть и его отрицательное изображение. Оба изображения полностью эквивалентны и применение любого из них не приводит к ошибке.

Пример записи числа в прямом коде:

А=+0,101011 Апр= 0,101011;

В=-0,110011 Впр=1,110011.

Сложение в прямом коде

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

Рассмотрим возможные 4 случая получения суммы чисел в прямом коде.

1) А0, В0, С0.

А=+0,101001 В=+0,000101

Апр=0,101001 Впр=0,000101 Спр=А+В

+0,101001

0,000101

0,101110

2) А0, В‹0, С0.

А=+0,101001 В=-0,000101

Апр=0,101001 Впр=1,000101 Спр=А-|В|

-0,101001

1,000101

0,100100

3) А‹0, В0, С‹0.

А=-0,101001 В=+0,000101

Апр=1,101001 Впр=0,000101 Спр=1+(|А|-|В|)

-0,101001

0,000101

0,100100 Спр=1+0,100100=1,100100

4) А‹0, В‹0, С‹0.

А=-0,101001 В=-0,000101

Апр=1,101001 Впр=1,000101 Спр=1+|А|+|В|

+0,101001

0,000101

0,101110 Спр=1+ 0,101110=1,101110

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