Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Машинное представление чисел (9 из 10)



21. Машинное представление -0,000001112, мантисса 10 разрядов, порядок 6 разрядов

-0,000001112=-0,1112E-5

Переведем число -0,1112 и далее добавим -5 к порядку

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

Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.1112*2 = 0.222
(целая часть 0)
0.222*2 = 0.444
(целая часть 0)
0.444*2 = 0.888
(целая часть 0)
0.888*2 = 1.776
(целая часть 1)
0.776*2 = 1.552
(целая часть 1)
0.552*2 = 1.104
(целая часть 1)
0.104*2 = 0.208
(целая часть 0)
0.208*2 = 0.416
(целая часть 0)
0.416*2 = 0.832
(целая часть 0)
0.832*2 = 1.664
(целая часть 1)
0.664*2 = 1.328
(целая часть 1)
0.328*2 = 0.656
(целая часть 0)
0.656*2 = 1.312
(целая часть 1)
0.312*2 = 0.624
(целая часть 0)
0.624*2 = 1.248
(целая часть 1)
0.248*2 = 0.496
(целая часть 0)
0.496*2 = 0.992
(целая часть 0)
0.992*2 = 1.984
(целая часть 1)
0.984*2 = 1.968
(целая часть 1)
0.968*2 = 1.936
(целая часть 1)
0.936*2 = 1.872
(целая часть 1)
0.872*2 = 1.744
(целая часть 1)
0.744*2 = 1.488
(целая часть 1)

Получаем число в 2-ой системе счисления: 000111000110101001111110000

Сдвинем число на 4 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.11000110101001111110000

Следующие 6 бит (с 2-го по 7-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в 6 бит +31. Таким образом, наша экспонента: -4 + 31 = 27

Так же учитываем -5, отведенные ранее

27-5=22

В двоичном виде 22=010110

Для мантиссы отведено 10 разрядов

Опускаем 1 нормальной формы и записываем только дробную часть

Назначение Знак

Порядок

Мантисса

Бит 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0
                                   

 

22. Машинное представление 111101,10012, мантисса 6 разрядов, порядок 4 разряда

Для этого переведем число в двоичное представление.
111101 = 110110001111111012
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.10012*2 = 0.2
(целая часть 0)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
Получаем число в 2-ой системе счисления: 00011001100110011001100
0.10012 = 000110011001100110011002
В итоге получаем число: 11011000111111101.000110011001100110011002
Сдвинем число на 16 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.101100011111110100011001100110011001100
Экспонента exp2=16
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 4 бита отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 16 + 127 = 143
Переведем экспоненту в двоичное представление.
143 = 100011112
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 10110001111111010001100
Для перевода необходимо умножить разряд числа на соответствующую ему степень разряда.
10110001111111010001100 = 222*1 + 221*0 + 220*1 + 219*1 + 218*0 + 217*0 + 216*0 + 215*1 + 214*1 + 213*1 + 212*1 + 211*1 + 210*1 + 29*1 + 28*0 + 27*1 + 26*0 + 25*0 + 24*0 + 23*1 + 22*1 + 21*0 + 20*0 = 4194304 + 0 + 1048576 + 524288 + 0 + 0 + 0 + 32768 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 0 + 128 + 0 + 0 + 0 + 8 + 4 + 0 + 0 = 5832332
В результате число 111101.10012 представленное в IEEE 754 c одинарной точностью равно 01000111110110001111111010001100

23. Обратный и дополнительный код A=-0,111101012

Представим число -0.111101012 в двоичном коде.

 

Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.111101012*2 = 0.222
(целая часть 0)
0.222*2 = 0.444
(целая часть 0)
0.444*2 = 0.888
(целая часть 0)
0.888*2 = 1.776
(целая часть 1)
Получаем число в 2-ой системе счисления: 0001
0.111101012 = 00012
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.0001 имеет обратный код 1,1111111.1110
Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
В итоге получаем:

11 10 9 8 7 6 5 4 3 2 1 0
                       
1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1


Число -0.111101012 представляется в двоичном дополнительном коде как 1,1111111.1111

 

Ответ: обратный код 1,1111111.1110, дополнительный код 1,1111111.1111

 

24. Обратный и дополнительный код A=0,101000002

Представим число 0.101000002 в двоичном коде.
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.101000002*2 = 0.202
(целая часть 0)
0.202*2 = 0.404
(целая часть 0)
0.404*2 = 0.808
(целая часть 0)
0.808*2 = 1.616
(целая часть 1)
Получаем число в 2-ой системе счисления: 0001
0.101000002 = 00012
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.0001 имеет обратный код 0,0000000.0001
Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Число 0.101000002 представляется в двоичном дополнительном коде как 0,0000000.0001

Ответ: обратный код и дополнительный код 0,0000000.0001

25. Сложить числа A=0,1000*2-2 и B=0,1011*2-4 на сумматоре обратного кода (6 мантисса, 4 порядок)

Для сложения чисел приведем их к одному порядку, сложим части без порядка и добавим порядок к сумме

Приводим к порядку -4, сложим числа 10+0,1011 *2-4

Представим числа 102 и 0.10112 в обратном коде.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000010 имеет обратный код 0,0000010
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1011 имеет обратный код 0,0000000.1011
Сложим числа 00000010.0000 и 00000000.1011
В итоге получаем:

11 10 9 8 7 6 5 4 3 2 1 0
                       
0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 1 1
0 0 0 0 0 0 1 0 1 0 1 1


Результат сложения: 000000101011
Получили число 00000010.1011

Добавляем порядок -4, получаем результат

0.10100001*10-2

Ответ: 0.10100001*10-2

26. Сложить числа A=-0,1100*2-3 и B=-0,1110*2-2 на сумматоре обратного кода (6 мантисса, 4 порядок)

Для сложения чисел приведем их к одному порядку, сложим части без порядка и добавим порядок к сумме

Приводим к порядку -2, сложим числа -0,0110+-0,1110 *2-2

Представим числа -0.01102 и -0.11102 в обратном коде.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.0110 имеет обратный код 1,1111111.1001
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1110 имеет обратный код 1,1111111.0001
Сложим числа 11111111.1001 и 11111111.0001
В 0-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 1-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
                    1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
                      0


В 4-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 5-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
            1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
              0 1 0 1 0


В 5-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 6-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
          1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
            1 0 1 0 1 0


В 6-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 7-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
        1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
          1 1 0 1 0 1 0


В 7-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 8-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
      1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
        1 1 1 0 1 0 1 0


В 8-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 9-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
    1 1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
      1 1 1 1 0 1 0 1 0


В 9-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 10-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
  1 1 1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
    1 1 1 1 1 0 1 0 1 0


В 10-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 11-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
  1 1 1 1 1 1 0 1 0 1 0


В 11-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 12-й разряд.

11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
1 1 1 1 1 1 1 0 1 0 1 0


В итоге получаем:

11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 1 1 1       1  
1 1 1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1
1 1 1 1 1 1 1 0 1 0 1 0


Возник перенос из знакового разряда. Добавим его (т.е. 1) к полученному числу (тем самым осуществляя процедуру циклического переноса).
В итоге получаем:

11 10 9 8 7 6 5 4 3 2 1 0
                       
1 1 1 1 1 1 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 0 1 0 1 1


Результат сложения: 111111101011
В старшем бите 1. Следовательно, в результате сложения получили отрицательное число. Переведем его обратно в прямой код. Для этого найдем обратный код (инвертируем все биты, кроме знакового): 00000010100
Получили число 0000001.0100

Добавляем порядок получаем 1.0100*2-2

Ответ: 1.0100*2-2

27. Найти произведение чисел A=0,1101*2-2 и B=-0,1000*2-2

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

Будем умножать числа без учета плавающей точки: 01101 x 01000
Умножение начинаем с младших разрядов: если текущий разряд второго числа равен 0, то везде записываем нули, если 1 - то переписываем первое число.

        0 1 1 0 1
        0 1 0 0 0
= = = = = = = = =
        0 0 0 0 0
      0 0 0 0 0  
    0 0 0 0 0    
  0 1 1 0 1      
0 0 0 0 0        
= = = = = = = = =
0 0 1 1 0 1 0 0 0


Поскольку умножали без учета плавающей запятой, то окончательный результат запишем как: 0.01101000

С учетом изначальной экспоненты -4 и полученного смещения -1 получим ответ

Ответ: 0,1101*2-5

28. Найди произведение чисел A=0,1010*2-3 и B=-0,1111*2-2

При перемножении чисел для экспоненциальной формы действует правило сложения степеней. Значит для подсчета необходимо умножить двоичные числа без экспонент, а к результату добавить 2-5, так же отдельно выносим знак при перемножении отрицательного и положительного числа – «-».

Будем умножать числа без учета плавающей точки: 01010 x 01111
Умножение начинаем с младших разрядов: если текущий разряд второго числа равен 0, то везде записываем нули, если 1 - то переписываем первое число.

        0 1 0 1 0
        0 1 1 1 1
= = = = = = = = =
        0 1 0 1 0
      0 1 0 1 0  
    0 1 0 1 0    
  0 1 0 1 0      
0 0 0 0 0        
= = = = = = = = =
0 1+1 0+1 0+1 1+1 0 1 1 0


При суммировании в разрядах 3, 4, 5, 6 возникло переполнение.
Поскольку умножали без учета плавающей запятой, то окончательный результат запишем как: 0.10010110

С учетом начальной экспоненты и знака получаем ответ

Ответ: -0,10010110*2-5

29. Найти частное чисел A=0,11101000*2-5 и B=0,101*2-2

При делении чисел для экспоненциальной формы действует правило вычитания степеней. Значит для подсчета необходимо поделить двоичные числа без экспонент, а к результату добавить 2-3.

Выполним деление 0.11101000 2 ÷0.101 2

 

-

0 .1 1 1 0 1 0 0 0 0 . 1 0 1 0 0 0 0 0

  1 0 1 0 0 0 0 0 1 . 0 1 1 1 0 0 1 1 0 0
     

-

1 0 0 1 0 0 0 0 0                  
        1 0 1 0 0 0 0 0                  
       

-

1 0 0 0 0 0 0 0 0                
          1 0 1 0 0 0 0 0                
           

-

1 1 0 0 0 0 0 0              
            1 0 1 0 0 0 0 0              
               

-

1 0 0 0 0 0 0 0 0        
                  1 0 1 0 0 0 0 0        
                   

-

1 1 0 0 0 0 0 0      
                    1 0 1 0 0 0 0 0      
                          1 0 0 0 0 0 0    


Получилось: 0.111010002÷0.1012 = 1.01110011

С учетом начальной экспоненты и смещения получаем ответ

Ответ: 0,101110011*2-2

 

30. Найти частное чисел A=0,10101100*2-7 и B=0,1010*2-9

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

Выполним деление 0.10101100 2 ÷0.1010 2

 

-

0 .1 0 1 0 1 1 0 0 0 . 1 0 1 0 0 0 0 0

  1 0 1 0 0 0 0 0 1 . 0 0 0 1 0 0 1 1 0 0
           

-

1 1 0 0 0 0 0 0              
            1 0 1 0 0 0 0 0              
               

-

1 0 0 0 0 0 0 0 0        
                  1 0 1 0 0 0 0 0        
                   

-

1 1 0 0 0 0 0 0      
                    1 0 1 0 0 0 0 0      
                          1 0 0 0 0 0 0    


Получилось: 0.101011002÷0.10102 = 1.00010011

С учетом начальной экспоненты и смещения получаем ответ

Ответ: 0,100010011*23


Поделиться:



Последнее изменение этой страницы: 2019-06-10; Просмотров: 167; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.05 с.)
Главная | Случайная страница | Обратная связь