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


Задачи на машинный код №2 (3 из 3)



 

41. Записать число 195 в форме с фиксированной запятой. Разрядная сетка 16

Чтобы поместить в 16 бит число со знаком и фиксированной точкой, надо:
1) старший бит отвести под знак
2) оставшиеся 15 бит поделить между целой и дробной частями так, чтобы в целую поместилось число 195<28.
В итоге (слева направо): бит под знак, 8 бит под целую часть, пять - под дробную.
Ответ: 0|11000011|0000000

42. Найти сумму чисел с фиксированной запятой -0,1101 и 0,1001 используя сумматор обратного кода

 

Представим числа -0.11012 и 0.10012 в обратном коде.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1101 имеет обратный код 1,1111111.0010
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1001 имеет обратный код 0,0000000.1001
Сложим числа 11111111.0010 и 00000000.1001
В итоге получаем:

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


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

43. Найти сумму чисел с фиксированной запятой -0,1001 и -0,1110 используя сумматор дополнительного кода

 

Представим числа -0.10012 и -0.11102 в дополнительном коде.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1001 имеет обратный код 1,1111111.0110
Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
В итоге получаем:

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


Число -0.1001 представляется в двоичном дополнительном коде как 1,1111111.0111
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000000.1110 имеет обратный код 1,1111111.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 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 1
                      0


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

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


Число -0.1110 представляется в двоичном дополнительном коде как 1,1111111.0010
Сложим числа 11111111.0111 и 11111111.0010
В 1-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 2-й разряд.

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


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

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


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
              0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
            1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
          1 1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
        1 1 1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
      1 1 1 1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
    1 1 1 1 1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
  1 1 1 1 1 1 0 1 0 0 1


В 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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
1 1 1 1 1 1 1 0 1 0 0 1


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

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 1 1 1
1 1 1 1 1 1 1 1 0 0 1 0
1 1 1 1 1 1 1 0 1 0 0 1


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

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


Ответ: 0000001.0111.


Поделиться:



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


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