• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Необходимо выполнить следующие вычисления

Demon11101995

Новые
Регистрация
13 Дек 2013
Сообщения
18
Реакции
0
Баллы
0
Необходимо выполнить следующие вычисления

x=0.01001000.110101
-x=1.10110111.001011
y=1.11100000.101110
-y=0.00011111.010010
необходимо выполнить следующие вычисления
x+y
x-y
-x+y
-x-y
 
Что значит "как сделать"?
Берется калькулятор Windows, переключаем его в инженерный вид и производим вычисления.
 
необходимо все подсчитать в дополнительном коде.
 
если кратко расписать перевод в дополнительный код, то:
Переводим 12 из десятичной системы счисления в двоичную:
12=1100
Получили четырёхбитное число 1100. Так как наименьшее адресуемое количество информации составляет 1байт или 8 бит, добавляем спереди 0000, чтобы получить байт. Получаем 00001100.
Инвертируем все биты полученного байта: 11110011.
Прибавляем к полученному значению 1:
11110011
1
-----------------
11110100
Это и есть -12 в дополнительном коде в двоичной системе счисления или F4 в шестнадцатиричной
 
Ладно. Хотя, учитывая, мягко говоря, лаконичность ТС, IMHO переходящую в обычное хамство (ведь просим же давать четкую и развернутую формулировку задания, а не цедить по чайной ложке), не стоило бы тратить на него время, но может быть кому другому пригодится.
Разберем задачу.
Итак, дан дополнительный двоичный код чисел. Исходя из знакового разряда, определяем, что х - положителен, а у - отрицателен. Переведем исходные данные в десятичную систему и сосчитаем ожидаемые результаты (точкой в двоичной записи отделим знаковые разряды):
Код:
 x = 00.01001000110101 →  4661
-x = 01.10110111001011 → -4661
 y = 01.11100000101110 → -2002
-y = 00.00011111010010 →  2002
откуда (в десятичной системе):
Код:
  x + y =  2659
  x - y =  6663
 -x + y = -6663
 -x - y = -2659
Теперь считаем в дополнительном коде:
Код:
 х + у: 
00.01001000110101
01.11100000101110
-------------------
10.00101001100011
Отбрасывая старшую единицу знаковых разрядов и стоящие впереди нули, получаем положительное двоичное число
101001100011, соответствующее 2659.
Далее:
Код:
 х - у = х + (-у): 
00.01001000110101
00.00011111010010
-------------------
00.01101000000111
Или опять же положительное число
1101000000111, соответствующее 6663.
Продолжаем:
Код:
 -х + у: 
01.10110111001011
01.11100000101110
-------------------
11.10010111111001
После отбрасывания старшей единицы знакового разряда получаем отрицательное число в дополнительном коде (младший знаковый разряд равен 1). Чтобы перейти к прямому двоичному коду, нужно:
а) вычесть 1
б) инвертировать цифровые разряды
Результат этих манипуляций - число
1.01101000000111, соответствующее -6663.
И, наконец, последнее:
Код:
 -х - у = -х + (-у): 
01.10110111001011
00.00011111010010
-------------------
01.11010110011101
Вновь получили отрицательное число. Проделав те же операции, что в предыдущем случае, получаем в прямом двоичном коде
1.00101001100011, что соответствует -2659
 
Назад
Сверху