Изучение методов перевода чисел из одних систем исчисления в другие (Лабораторная работа № 7), страница 4

К нему прибавляется 1:

1111’1111’0110’1111

                                   1

1111’1111’0111’0000

и мы получаем дополнительный код числа -144. Он также является обратным кодом числа -143.

По дополнительному коду отрицательное число “восстанавли­вается” в обратном порядке:

1)   по D(A) как беззнаковому целому вычисляется R(A)=D(A)-1;

2)   код, обратный R(A), является прямым кодом числа |А|.

Тот же результат можно получить, если:

1)   построить код R(D(A)), обратный D(A);

2)   к R(D(A)) как беззнаковому прибавить 1.

Соответствие знаковых целых чисел и их кодов приведено в Таблице 1. Как видим, отрицательных чисел на одно больше, чем положительных.

Элемент X произвольного типа-перечисления представляется как беззнаковое целое число ord (X).

1.2.3. Принципы представления действительных чисел

Действительные числа в большинстве компьютеров представле­ны в N=4, 6, 8 или 10 байтах, разделенных на три поля (последо­вательности бит):

  <знак><порядок><мантисса>

Поле <знак> имеет длину 1, а длины двух других полей обо­значим d и r соответственно. Ясно, что 1+d+r = 8N. Пусть s, e, m — значения этих полей как беззнаковых целых. Они задают:

·  s=0 – знак ‘+’ числа, s=l – знак ‘-‘;    

·  e – его порядок t = e - (2d-1-1);

·  mмантиссу числа (дробную часть) m1 = m2-r

При значениях е, отличных от крайних значений 0 и 2d-l, поля <знак><порядок><мантисса> задают число, которое является зна­чением выражения:

                                                         (-1)s•(1+m1)•2t

Поскольку 1<=1+m1<2, то говорят, что число представлено в нормализованном виде. Показатель t называется истинным порядком числа, а есдвинутым порядком” (он на 2d-1-1 больше настоя­щего). Итак, значения е от 1 до 2d-2 задают истинные порядки t от l-(2d-1-l) = 2-2d-1 до 2d-2-(2d-1-1) = 2d-1-1.

Например, пусть d=5, r=10 в двухбайтовом представлении. Сдвиг порядка – 25-1-1 = 24-1. Рассмотрим изображение числа -12.375:

-12.375 = (-1100.011)2= (-1.100011)2-23

т.е. t=3, m1=0.100011.

Отсюда s=1, е=3+(24-1)=18=(10010)2, m=1000110000, и представлено последовательностью бит 1’10010’1000110000 (для наглядности поля отделены апострофами).

Последовательность бит 0’00001’0000000000 представляет минимальное положительное число, задаваемое при d=5, r=10:

                                              (1+0)• 21-16+1=2-14                

Следующим   числом,   представленным   как  0’00001’00000000001, будет:

                                         (1+2-10)•21-16+1=2-14+2-24

Последовательность бит 0’11110’11111111111 представляет максимальное число:

(1+(210-1)•2-10)•232-2-16+1=(2-2-10)•215 = 216-25=65504

Предшествующее ему число представлено как 0’11110’11111111110 и равно:

(1+(210-2)•2-10) •232-2-16+1  = (2 - 2-9)• 215 = 216 - 26 = 65472

Как видим, разность между двумя соседними числами изменяется от 2-24 до 25=32.

При e=0 независимо от s и m представлено число 0. При e=2d-1 представление числа используется специальным образом. Что собственно в этой лабораторной работе использоваться не будет.

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

Задание для самостоятельного выполнения:

Написать программу, которая будет состоять из двух частей:

    Часть 1: Перевод чисел из десятичной системы исчисления в заданную;

    Часть 2: Перевод чисел из системы с заданным основанием в десятичную.