Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Консультации по информатике


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 6888
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2265
∙ повысить рейтинг »
Лиджи-Гаряев Владимир
Статус: Профессионал
Рейтинг: 1983
∙ повысить рейтинг »

/ НАУКА И ОБРАЗОВАНИЕ / Точные и естественные науки / Информатика

Номер выпуска:204
Дата выхода:24.01.2011, 23:30
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:135 / 134
Вопросов / ответов:1 / 2

Вопрос № 181941: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Найти С1 = А+В, С2 = А-В, С3 = В - А, С4 = - А –В, где А = 6078, В = - 556; При выполнении вычислений необходимо использовать двоично- десятичный дополнительный код. Результа...



Вопрос № 181941:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Найти С1 = А+В, С2 = А-В, С3 = В - А, С4 = - А –В,
где А = 6078, В = - 556;
При выполнении вычислений необходимо использовать двоично- десятичный дополнительный код. Результат должен быть представлен в прямом коде.

1. Не могу найти двоично- десятичный дополнительный код к отрицательным значениям.
2. А операции выполнить не могу тем-более.

Помогите пожалуйста решить...





Отправлен: 19.01.2011, 23:12
Вопрос задал: Simuk (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Лысков Игорь Витальевич (Старший модератор) :
Здравствуйте, Simuk!
Двоично-десятичный дополнительный код для отрицательных чисел получается вычитанием из числа 99999999 (для 8-х разрядных чисел) модуля числа и прибавления 1 к результату. Признаком отрицательного числа является цифра 9 в старшем разряде.
Запишем число В в ДДДК:
В = - 556 = 99999999 - 556 + 1 = 99999444
Произведем операции (вычитание сведем к сложению с числом в дополнительном коде):
1) С1 = А + В = 00006078 + 99999444 = 00005522 (5522)
2) С2 = А - В = А + (-В) = 00006078 + (99999999 - 99999444 + 1) = 00006078 + 00000556 = 00006634 (6634)
3) С3 = В - А = В + (-А) = 99999444 + (99999999 - 00006078 + 1) = 99999444 + 99993922 = 99993366 (-6634)
4) С4 = - А - В = (-А) + (-В) = (99999999 - 00006078 + 1) + (99999999 - 99999444 + 1) = 99993922 + 00000556 = 99994478 (-5522)

В прямом коде получим (знак числа помечается самым старшим битом) :
5522 = 00005522
-5522 = 80005522
6634 = 00006634
-6634 = 80006634
-----
Люби своего ближнего, как самого себя

Ответ отправил: Лысков Игорь Витальевич (Старший модератор)
Ответ отправлен: 20.01.2011, 00:49
Номер ответа: 265518
Украина, Кировоград
Тел.: +380957525051
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265518 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Хазов Михаил Юрьевич (Практикант) :
    Здравствуйте, Simuk!
    Двоично-десятичный дополнительный код получается, когда в двоично-десятичном представлении (каждая десятичная цифра в числе представляется четверкой битов) нули заменяют на 1 и наоборот. Потом ко всему этому надо добавить 1, можно до начала расчетов, можно после, но лучше - до, потому что 0 в этом случае приобретает определенность.

    В процессе сложения при переполнении тетрады или переносе бита в старшую тетраду полагается делать коррекцию: добавлять к провинившейся тетраде 6[д]=0110[б].
    При работе с дополнительным кодом добавку 6[д], похоже, нужно заменить на 10[д]= 1010[б].
    Например:
    556= 0000 0101 0101 0110
    В=-556=1111 1010 1010 1001 + 1=1111 1010 1010 1010

    А=6078 = 0110 0000 0111 1000
    -А=1001 1111 1000 0111 +1=1001 1111 1000 1000

    С2:А-В=6078+556
    А=6078 = 0110 0000 0111 1000
    -В= 556 = 0000 0101 0101 0110

    Складываем А+В побитово справа налево.
    Для первой цифры получаем: 0000 0000 0000 1110
    Та кой комбинации битов не соответствует ни одна цифра, это переполнение. Добавляем 6 = 0110, получаем 1 0100, оставляем 0100, единицу добавляем к следующей тетраде.
    Получаем второй промежуточный результат: 0000 0000 1101 0100
    Опять переполнение, опять к 1101 добавляем 0110.
    Получаем 0000 0000 0011 0100, единицу добавляем к следующей тетраде.
    Результат: 0110 0110 0011 0100 = 6634 - получилось.

    Полный причесанный ответ приведен в файле 181941_2-10_predstavlenie.doc (49.0 кб)
    Добавил ссылку на файл с полным ответом
    -----
    ∙ Отредактировал: Лысков Игорь Витальевич (Старший модератор)
    ∙ Дата редактирования: 21.01.2011, 09:51 (время московское)

    Ответ отправил: Хазов Михаил Юрьевич (Практикант)
    Ответ отправлен: 20.01.2011, 12:01
    Номер ответа: 265519
    Тел.: +7 913 959 4017
    Адрес: 630064, Новосибирск, Новогодняя 18-21
    Адрес сайта: http://sibforex.ru
    Абонент Skype: mik195511

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265519 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное