powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Двоично-десятичный формат
25 сообщений из 26, страница 1 из 2
Двоично-десятичный формат
    #35990852
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем по теме, но более подходящего раздела я не нашёл.
Господа, помогите, пожалуйста.

Дано: А(десятичн.) = -1184
В (десятичн.) = -477

Найти значения С1 = А+В, С2 = А-В, С3 = В-А+, С4 = -А-В

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

Проблема в том, что когда пробую проделывать эти арифметические операции в обратном коде, то получается ерунда.

Обратные коды я нашёл.

А 2-10 обр = 1. 1000 1000 0001 0101
В 2-10 обр = 1. 0000 0101 0010 0010

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

Помогите разобраться.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35990905
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24spam@tut.by,

какой из двоично-десятичных форматов?
"8421" ?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35990916
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN24spam@tut.by,

какой из двоично-десятичных форматов?
"8421" ?

В смысле?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991222
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
24spam@tut.by, имеется в виду BCD? или просто двоичная арифметика?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991351
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, - не знаю. Мне надо выполнить это задание. Там никакой дополнительной информации нет.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991408
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратный код получается вычитанием из 9 числа , и затем прибавляется 1.
Т.е. -1184 - это 1000 1000 0001 0110
-477 - это 1001 0101 0010 0011
-1184 + (-477) должно получиться -1661, т.е. в обратном коде
1000 0011 0011 1001

Посмотрим что получается.
Складываем младшие разряды:
0110 + 0011= 1001
0001 + 0010 = 0011
1000+ 0101 = 1100 > 1001 - остается 0011 и перенос в старший разряд
1000 + 1001 = 10001 + перенос = 10010 > 1001 - остается 18-10 = 1000.
Одновременно два переноса в старший разряд и из старшего говорит об отсутствии переполнения.
Вроде всё верно?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991430
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибся немного.
Действия с третьим разрядом так выглядят:
1000+ 0101 = 1101 > 1001 - остается 0011 и перенос в старший разряд
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991828
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Vowk

Большое спасибо за помощь.
Если позволите, несколько вопросов.

1) Значения выражений в каждой паре С1/С4 и С2/C3 отличаются лишь знаком, поэтому поэтому можно ли вычислить только модуль, а потом уже поставить 1 перед отрицательным зачением, и 0 - перед положительным?

2) Пробую вычислить С2

Это равносильно в обратном коде (-А)+В, т.е. в обратном коде -1184 + 477

делаю


1000 1000 0001 0110
+
0000 0100 0111 0111
=
1000 1100 1000 1101

А что делать дальше? Как я понимаю, надо в выделенные разряды добавлять 0110 ? Или что?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35991874
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24spam@tut.by
2) Пробую вычислить С2
Это равносильно в обратном коде (-А)+В, т.е. в обратном коде -1184 + 477

Равносильно с точки зрения арифметики, но не с точки зрения процессора. При таком подходе задание будет выполнено неверно.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35992081
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vowk24spam@tut.by
2) Пробую вычислить С2
Это равносильно в обратном коде (-А)+В, т.е. в обратном коде -1184 + 477

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

А как тогда нужно?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35992109
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во втором случае необходимо вычислить -1184 -(-477) и должно получиться -707, что
в обратном коде 1001 0010 1001 0011
Операнды те же, только вместо сложения процессор должен выполнять вычитание.
Начинаем с младщего разряда.
0110 - 0011 = 0011
0001 < 0010 => занимаем 1 из старшего разряда и не из 1 вычитаем 2, а из 11 = 9 = 1001.
1000 - 0101 : с учетом ранее сделанного заема на самом деле надо вычесть
0111 - 0101 = 0010
Последний разряд
1000 < 1001 : берем заем (из ниоткуда) и вместо 8 - 9 вычисляем 18 - 9 = 9 = 1001.
Вроде получается, а вот насчет тестирования переполнения я призадумался.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35992130
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще еще зависит от того, как определяется операция вычитания. Процессор может или на самом деле выполнять вычитание (как в приведенном решении), или заменять вычитание на сложение с числом в обратном коде - зависит от того, какой был выбран подход в теории.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35992174
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приведенном решении может возникнуть вопрос: каким образом практически выполняется
"занимаем 1 из старшего разряда и не из 1 вычитаем 2, а из 11 = 9 = 1001".
Ну, в теории может быть всё что угодно, а на практике (процессоры x86) в случае заема процессор превращает 0001 в 10001, т.е. не в 11, а в 17. Но существуют команды "десятичная коррекция сложения (DAA), вычитания (DAS)". Задача последней - в случае заема вычесть 6, и вместо 17 - 2 (что было бы неверно), на самом деле вычисляеся 11 -2.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35992280
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, и если результат должен быть представлен в прямом коде, то в случае A-B мы видим, что старший байт 9 >=5 - значит, число отрицательное. Поэтому вычитаем из 9 каждый разряд:
0000 0111 0000 0110, а затем прибавляем 1:
0000 0111 0000 0111, что дает -707 (для запоминания знака "минус" видимо предполагается где-нибудь специальный бит или байт).
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35995315
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знак, действительно, хранится в отдельном байте, который ставится перед модульной частью и отделён от него точкой.

А как быть с другими выражениями?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35995583
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С какими другими?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35995770
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vowk,

C3 и C4
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35995914
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае C3 непонятно что сделать надо: почему знак + после числа?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35996638
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vowk,

Если честно, мне тоже не понятно. Думаю, просто надо сделать В-А.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35997634
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пора бы уже и разобраться.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #35997933
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VowkПора бы уже и разобраться.

И тем не менее, не могли бы вы помочь?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #36000423
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в третьем случае B-A, то
B = 1001 0101 0010 0011
A = 1000 1000 0001 0110
0011 < 0110 : занимаем из 3-го разряда = 13 - 6 = 7 = 0111 и заем из следующего разряда
0010 - 0001 = 0001 и минус заем = 0000
0101 < 1000 : занимаем из старшего разряда = 15 - 8 = 7 = 0111 и заем из страшего разряда
1001 - 1000 = 0001 и минус заем = 0000
Результат 0000 0111 0000 0111 - уже находится в прямом коде.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #36001794
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vowk, спасибо вам большое за помощь, но не могли бы вы мне объяснить, как вы получили обратные коды двоично-десятичного представления?

Я не понимаю, как из прямого двоично-десятичного кода числа -1184 (11.0001 0001 1000 0100) у вас получился 1000 1000 0001 0110? И как из прямого двоично-десятичного кода числа -477 (11.0000 0100 0111 0111) у вас получилось 1001 0101 0010 0011?

Потому что у меня эти числа получились

-1184 обр. код= 11.1000 1000 0001 0101
-477 обр. код = 11.1001 0101 0010 0010

Т.е., у меня значения отличаются на единицу. Мне сказали, что если +1 - то это будет уже дополнительный двоично-десятичный код, а мне нужен обратный .

Где про это можно почитать?
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #36002762
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24spam@tut.by,
согласен, дополнительный код отличается от обратного на 1. Но ведь для сложения и вычитания отрицательных чисел нужен именно дополнительный код, а не обратный (насколько мне известно). Т.е. сначала получают обратный, затем дополнительный, и затем используют в арифметических операциях. Так что скорее всего несколько недопонимает ситуацию тот, кто составлял условие задание - здесь ничего поделать нельзя. Посмотри по Инету на эту тему.
...
Рейтинг: 0 / 0
Двоично-десятичный формат
    #36002779
24spam@tut.by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Но в задании сказано, что нужно использовать именно обратный код . Значит, без дополнительного кода никак?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Двоично-десятичный формат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]