IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Двоично-десятичная арифметика
Lady_Arvena
сообщение 16.1.2009, 18:12
Сообщение #1


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Здравствуйте, помогите пожалуйста, разобраться с задачей. У меня ничего не получается, уже который день, а скоро сдавать... ohmy.gif

Надо найти значения выражений: С1 = А+В, С2 = А-В, С3 = В-А, С4 = -А-В, если
А = +4556;
B: -699;

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

Перевела:
[A]пк = [A]дк = 0. 0100 0101 0101 0110;
[B]пк = 1. 0110 1001 1001;
[B]дк = 1. 0011 0000 0000.

Дальше, подскажите как вычислять эти выражения.
Заранее всем спасибо большое!

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
afterstep
сообщение 17.1.2009, 13:46
Сообщение #2


Пользователь


Группа: Активисты
Сообщений: 5 336
Регистрация: 14.3.2005
Пользователь №: 2 413



1) уравняй длину
2) не совсем понял метод перевода
A = 4556 -> 0x11cc -> 0001000111001100
B = 699 -> 0x02bb -> 0000001010111011 - ет без минуса - ет только число перевести
логическое отрицание сего + 1 и даст искомое
B = -699 -> 0xfd45 -> 1111110101000101

Итого - пример - A+B=0x0f11 -> 0000111100010001
то есть
Код
  0001000111001100 +
  1111110101000101
--------------------------
1 0000111100010001

и бит переноса (переполнение) - игнорируем
то же самое - шестнадцатиричньіе
11cc
fd45
-------
1 0f11[/code]
c+5=11;
c+4+1=11
d+1+1=f
1+f=11

аналогично - минус, только сразу учитьіваем, что придестя "позаимствовать"
A-B=0x1487 -> 0001010010000111
Код
1 0001000111001100
  1111110101000101
-------------------------
  0001010010000111



"заимствование" процессор "исполняет" автоматичекски smile.gif - то есть "заморачиваться" етим не надо.
Достаточно считать, что как у хорошего шулера - всегда есть "запасная единичка в наивьісшем разряде" "в рукаве"

Сообщение отредактировал afterstep - 17.1.2009, 13:46
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 17.1.2009, 15:31
Сообщение #3


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(afterstep @ 17.1.2009, 16:46) *

2) не совсем понял метод перевода
A = 4556 -> 0x11cc -> 0001000111001100
просто ты перевел в двоичный код, а человеку в двоично-десятичный надо. Типа каждая цифра переводится отдельно в двоичный код. Не помню, зачем такой код нужен... может автор темы просветит?



Цитата(Lady_Arvena @ 16.1.2009, 21:12) *

Здравствуйте, помогите пожалуйста, разобраться с задачей. У меня ничего не получается, уже который день, а скоро сдавать... ohmy.gif

Надо найти значения выражений: С1 = А+В, С2 = А-В, С3 = В-А, С4 = -А-В, если
А = +4556;
B: -699;

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

Дальше, подскажите как вычислять эти выражения.
Заранее всем спасибо большое!
Так и вычисляй как в десятичной - отдельно каждые 4 цифры, начиная с конца (и складывая по модулю 10, с переносов "излишков" в старший разряд)
для -A найди еще дополнительный код
С1 = А+В, дк(A) + дк(B )
С2 = А-В = дк(A) + дк(-B )
С3 = В-А, дк(B ) + дк(-A)
С4 = -А-В, дк(-A) + дк(-B )
если получится отрицательное число - то нужен обратный перевод в прямой код + знак минус

только вот почему у тебя "знак" не часть твоих 16 битов? почему отдельно? или у тебя 32 бита?


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 17.1.2009, 16:10
Сообщение #4


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



А кстати... а есть ли дополнительный код в двоично-десятичной системе счисления?? unsure.gif

Как вот это (дк) получено? huh.gif
Цитата
[B]пк = 1. 0110 1001 1001;
[B]дк = 1. 0011 0000 0000.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 17.1.2009, 17:31
Сообщение #5


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Да, я перевожу в двоично-десятичный. То есть по вот этой табличке: Изображение
Каждая десятичная цифра заданного числа переводится по табличке в свой двоичный эквивалент.
Я перевела, у меня получилось А = +4556 (в 10 СС) = 0100 0101 0101 0110 (в 2-10 СС);
Операнд B = -699 (в 10 СС) = - 0110 1001 1001 (в 2-10 СС);
Цитата
1) уравняй длину
А как уравнять длину? Вот так (когда складываю А и В в доп. коде):
0. 0100 0101 0101 0110 (А (дк))
+
1. 0011 0000 0000 (В (дк))
Там действительно получается, что надо куда-то написать нули.
Я пишу вот так:
0. 0100 0101 0101 0110 (А (дк))
+
1. 0000 0011 0000 0000 (В (дк))
(то есть в первую тетраду, а выравниваю по правому краю). Верно ли это?
Цитата
Так и вычисляй как в десятичной - отдельно каждые 4 цифры, начиная с конца (и складывая по модулю 10, с переносов "излишков" в старший разряд)
для -A найди еще дополнительный код
С1 = А+В, дк(A) + дк(B )
С2 = А-В = дк(A) + дк(-B )
С3 = В-А, дк(B ) + дк(-A)
С4 = -А-В, дк(-A) + дк(-B )
если получится отрицательное число - то нужен обратный перевод в прямой код + знак минус
Спасибо большое, PolPoll, с этим разобралась, у меня тоже получилось, что надо вычислить выражения: С1 = А+В, С2 = А+(-В), С3 = В+(-А), С4 = (-А) +(-В).

Самое сложное начинается потом:
Я пытаюсь вычислить первое выражение и найти С1:
0. 0100 0101 0101 0110 (А (дк))
+
1. 0000 0011 0000 0000 (В (дк))
______________________
1. 0100 1000 0101 0110 (это получилось).

Посмотрите, пожалуйста, правильно ли у меня это получилось?
Цитата
А кстати... а есть ли дополнительный код в двоично-десятичной системе счисления??

Как вот это (дк) получено?

Да, есть, там надо сначала перевести в двоично-десятичную СС сами числа (которые сначала заданы в десятичной), а потом сформировать для них дополнительный код.
[B]пк = 1. 0110 1001 1001; -- это прямой код перевёденного В, он получен так же, только в качестве знакового разряда стоит 1, что показывает, что число отрицательное. То есть, сам модуль числа 0110 1001 1001, и просто к нему прибавила единичку.
А это [B]дк = 1. 0011 0000 0000 получено вот так:
1001 1001 1001
-
0110 1001 1001
_____________
0011 0000 0000.
(Мне в инсте подсказали, что надо из 1001 вычитать модуль числа). Но я не уверена насчёт правильности, а как переводить в дополнительный код двоично-десятичные отрицательные числа, у меня нет теории... sad.gif

Помогите пожалуйста это сделать, ибо уже месяц сижу, а всё ничего не выходит.
Буду очень благодарна за помощь!!!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 18.1.2009, 8:56
Сообщение #6


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 17.1.2009, 20:31) *

Да, есть, там надо сначала перевести в двоично-десятичную СС сами числа (которые сначала заданы в десятичной), а потом сформировать для них дополнительный код.
[B]пк = 1. 0110 1001 1001; -- это прямой код перевёденного В, он получен так же, только в качестве знакового разряда стоит 1, что показывает, что число отрицательное. То есть, сам модуль числа 0110 1001 1001, и просто к нему прибавила единичку.
А это [B]дк = 1. 0011 0000 0000 получено вот так:
1001 1001 1001
-
0110 1001 1001
_____________
0011 0000 0000.
(Мне в инсте подсказали, что надо из 1001 вычитать модуль числа). Но я не уверена насчёт правильности, а как переводить в дополнительный код двоично-десятичные отрицательные числа, у меня нет теории... sad.gif
Вот и первая ошибка тогда.

1) СНАЧАЛА надо выровнять, потом отнять, потом еще и плюс 1
получится
1. 1001 0011 0000 0001


Теперь считаем:
С1 = А+В

0. 0100 0101 0101 0110 (А (дк))
+
1. 1001 0011 0000 0001 (В (дк))
______________________
1. 1101 1000 0101 0111
в первой тетраде число >9! тогда отнимаем от него 10 (=1010) и переносим 1 в старший разряд -
получаем знак + (=0)
0. 0011 1000 0101 0111 (С1 (дк)) = пк, тк положительное

А = 4556;
B = -699;
С1=3857


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 18.1.2009, 9:20
Сообщение #7


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(PolPoll @ 18.1.2009, 11:56) *

в тетраде число >9! тогда отнимаем от него 10 (=1010) и переносим 1 в старший разряд
При поиске C2 = A + (-B ) такие переносы почти из каждой тетрады будут возникать wink.gif


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 18.1.2009, 13:25
Сообщение #8


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Спасибо большое, PolPoll!!!
Да, теперь, благодаря объяснениям, я уже начинаю разбираться немного...
У меня тоже получилось:
1) То есть просто дописываю к - 0110 1001 1001 в первую тетраду нули, и получается:
В = - 0699 = - 0000 0110 1001 1001;
Потом при переводе в дополнительный код точно так же получилось:
1001 1001 1001 1001
-
0000 0110 1001 1001
-------------------------
1001 0011 0000 0000,
прибавляю единичку: В(дк) = 1. 1001 0011 0000 0001

А вот потом при сложении возникли проблемы... Спасибо, что объяснила, что когда переполнение тетрады (или как это назвать), то есть когда число в тетраде больше 9, то надо так переносить, вот этого я и не знала, поэтому и запуталась...

А теперь вот делаю С2 = А + (-В), то есть тут В уже положительное...
Дополнительный код числа -В:
-В (дк) = 0. 0000 0110 1001 1001;

Выполняю сложение:
0. 0100 0101 0101 0110 (А (дк))
+
0. 0000 0110 1001 1001 (-В (дк))
---------------------------------------
0. 0100 1011 1110 1111
Вот, сразу в последней тетраде вышло такое число, что я вообще никак не могу понять, что за оно, и как его перевести... unsure.gif Вроде в таблице такого нет...
Может быть, тут тоже требуется какой-то особый перенос? (Или я сосчитала что-то неправильно? Пересчитывала много раз, это же получается).
А в третьей тетраде выходит 15, во второй 11, в первой 4... к которой надо будет прибавлять 1, и получится, собственно, требуемое число... (5255...) Только вот как быть в последней тетрадой, я не знаю, подскажи, пожалуйста.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 18.1.2009, 14:05
Сообщение #9


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 18.1.2009, 16:25) *

А теперь вот делаю С2 = А + (-В), то есть тут В уже положительное...
Дополнительный код числа -В:
-В (дк) = 0. 0000 0110 1001 1001;

Выполняю сложение:
0. 0100 0101 0101 0110 (А (дк))
+
0. 0000 0110 1001 1001 (-В (дк))
---------------------------------------
0. 0100 1011 1110 1111
Вот, сразу в последней тетраде вышло такое число, что я вообще никак не могу понять, что за оно, и как его перевести... unsure.gif Вроде в таблице такого нет...
Может быть, тут тоже требуется какой-то особый перенос? (Или я сосчитала что-то неправильно? Пересчитывала много раз, это же получается).
А в третьей тетраде выходит 15, во второй 11, в первой 4... к которой надо будет прибавлять 1, и получится, собственно, требуемое число... (5255...) Только вот как быть в последней тетрадой, я не знаю, подскажи, пожалуйста.
Да, таблица у тебя какая-то урезанная. должна быть еще одна строка - F(16 CC) = 15 (10) = 1111(2)


поскольку больше 9, отнимай 10, а к предыдущей тетраде прибавляй 1

там тоже станет 1111. опять отнимай - прибавляй... и т.д.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 18.1.2009, 16:27
Сообщение #10


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Спасибо, там теперь получилось! smile.gif Получилось:
0. 0100 0101 0101 0110
+
0. 0000 0110 1001 1001
----------------------------
0. 0100 1011 1110 1111
, и получилоь в итоге значение:
0. 0101 1100 0101 0101,
что в переводе на десятичную систему счисления получается 5255...

PolPoll, там какая-то странная вещь выходит с третьим примером... Получается вообще что-то не то.
Вот как я считала:
Дополнительный код -А = 1. 0101 0100 0100 0100;
(Дополнительный код я находила следующим образом:
1001 1001 1001 1001
-
0100 0101 0101 0110
-------------------------
0101 0100 0100 0011
+ 1 в конце:
-------------------------
0101 0100 0100 0100)

Дальше считаю С3:
1. 1001 0011 0000 0001
+
1. 0101 0100 0100 0100
----------------------------
10. 1110 0111 0100 0101,
что в переводе означает: 10. _14_745... Первую тетраду перевожу, как ты и объясняла: 11. 4745.

Не подскажешь, как тут можно с этим разобраться?
Потому что там, по подсчётам, тоже должно было выйти:
-0699
+
-4556
-------
-5255... huh.gif

Сообщение отредактировал Lady_Arvena - 18.1.2009, 16:28
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 18.1.2009, 18:19
Сообщение #11


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



в третьем должно получится число -5255 в дополнительном коде
и надо будет сделать обратное преобразование в прямой код, чтоб это число "увидеть" smile.gif
то есть сначала отнять 1, потом само число отнять от 1001 ...


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 18.1.2009, 18:27
Сообщение #12


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Дальше считаю С3:
1. 1001 0011 0000 0001
+
1. 0101 0100 0100 0100
----------------------------
10. 1110 0111 0100 0101
в первой больше 9! и для знака одного разряда хватит
1. 0100 0111 0100 0101 (знак "-" в результате переноса из старшей тетрады появится)
------------------
теперь переводим в прямой код, тк отрицательное и не совпадает дк с пк
---------------
-1
0100 0111 0100 0100
---------------
1001 1001 1001 1001
-
0100 0111 0100 0100
==============
0101 0010 0101 0101 = 5255 и отрицательное оно smile.gif


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 9.2.2009, 20:15
Сообщение #13


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Надо сложить два числа А и В, которые представлены в виде с плавающей точкой


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 21.2.2009, 21:06
Сообщение #14


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Вопрос вот такой:
Преподаватель (не знаю, что его не устраивает... mad.gif ) сказал, что специально дополнительный код для В искать не надо.
Надо использовать инверсный + 1 = для дополнительного.
То есть просто инвертировать модуль прямого кода В и прибявлять к нему 1 = там будет лишняя шесть.
А потом при коррекции учитывать эту шесть и прибавлять 0110 во всех тетрадах, где был перенос в старший разряд.
То есть я делаю:
Двоично-десятичный код заданных чисел будет:
A2-10 = 0100 0101 0101 0110
B2-10 = - 0000 0110 1001 1001

Прямой двоично-десятичный код этих чисел будет:
[A]пк = 0. 0100 0101 0101 0110;
[B]пк = 1. 0000 0110 1001 1001.

Инверсный код В+1: 1.1111 1001 0110 0111
Расчёт выражения:
[С1]пк:
0.0100 0101 0101 0110 (А дк)
+
1.1111 1001 0110 0111 (В ик+6 и +1)
=================
0.0011 1110 1011 1101
+
0110 (коррекцию выполняю в первой тетраде, т.к. в ней был перенос)
=================
0.1001 1110 1011 1110 (т.к. +1)
Инвертирую:
0.0110 0001 0100 0001
Таким образом, получается 6141, но должно получиться: 4556 + (-699) = 3857.
Как тут надо делать правильно. чтобы получилось требуемое число? unsure.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 22.2.2009, 6:11
Сообщение #15


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Чтобы понятней было, что я имею в виду, вот пример из моего учебника, с которым я делаю всё в точности так, как написано:
Найти двоично-десятичные значения C1, C2, C3, C4, определяемых соответственно выражениями:
С1= А+В, С2=А-В, С3= В-А, С4=-А-В, используя модифицированный обратный код, если: А = 3783 и B = -5492.
Результат представить в прямом коде. При реализации операции сложения использовать обратный код.
Решение
Прямой двоично-десятичный код заданных чисел имеет вид
[А]пк = 0. 0011 0111 1000 0011,
[b ] пк = 1. 0101 0100 1001 0010.
Расчет выражений для C1, C2, C3, C4 осуществляется следующим образом.
[С1] пк :
0. 0011 0111 1000 0011 [А]ок
+
1. 1010 1011 0110 1101 [B ] ик = [B ]ок+6
==================
1. 1110 0010 1111 0000 - сумма ([А]ок и B ]ик0)
+
0110 0110 - коррекция в тедрадах, где был перенос . (эта шестёрка прибавляется к выделенным жирным тетрадам)
=========================
1. 1110 1000 1111 0110
1. 0001 0111 0000 1001 - [С1]пк
=========================
- 1 7 0 9 - С(10) = это что получили в итоге;

Вот у меня всё делается абсолютно аналогично (только учитываю, что код дополнительный а не обратный, и делаю +1). Но у меня вообще н еполучается правильный ответ, если так (через инверсный код) делать. Что я делаю неправильно?, подскажите, пожалуйста.

Сообщение отредактировал Lady_Arvena - 22.2.2009, 6:18
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 22.2.2009, 18:18
Сообщение #16


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Цитата(Lady_Arvena @ 22.2.2009, 9:11) *

Чтобы понятней было, что я имею в виду, вот пример из моего учебника, с которым я делаю всё в точности так, как написано:
Найти двоично-десятичные значения C1, C2, C3, C4, определяемых соответственно выражениями:
С1= А+В, С2=А-В, С3= В-А, С4=-А-В, используя модифицированный обратный код, если: А = 3783 и B = -5492.
Результат представить в прямом коде.
Пример с С1 не катит - у тебя результат получается положительный (то есть сразу в прямом коде, а ты его пытаешься из обратного в прямой перевести biggrin.gif )
нужен пример C2 допустим... или С4


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 24.2.2009, 10:52
Сообщение #17


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Цитата
то есть сразу в прямом коде, а ты его пытаешься из обратного в прямой перевести
biggrin.gif да уж... А я думаю, что я неправильно делаю... blush.gif Этот перевод (из обратного в прямой), наверное, уже по инерции.
Вот примеры для С4, С3, С2 и С1, это тот же пример (там просто используется модифицированный обратный код, но отличие модифицированного кода от простого обратного -- только в том, что в обратном поле знака содержит 1 цифру (0.), а в модифицированном 2 цифры (00.), то есть на то, что он модифицированный, мождно просто не обращать внимания, и один ноль/одну единицу из знакового разряда просто убрать).
Изображение
Изображение
Изображение
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolPoll
сообщение 24.2.2009, 13:56
Сообщение #18


:)


Группа: Главные администраторы
Сообщений: 5 858
Регистрация: 24.11.2005
Из: Москва
Пользователь №: 5 327



Вот по 4 способу и делай.
+1 ты уже заранее сделала,
далее всем, что без переноса +1010 (без переносов в другие тетрады)


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Lady_Arvena
сообщение 26.2.2009, 19:12
Сообщение #19


Пользователь


Группа: Пользователи
Сообщений: 52
Регистрация: 16.1.2009
Пользователь №: 21 326



Спасибо большое, PolPoll (дошло, как делать надо smile.gif ), сделала все 4 примера, получилось smile.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Andrei Kanapliou
сообщение 22.3.2009, 0:07
Сообщение #20


Пользователь


Группа: Пользователи
Сообщений: 2
Регистрация: 21.3.2009
Пользователь №: 21 590



PolPoll или Lady Arvena,
подскажите, пожалуйста, как сложить в обратном двоично-десятичном коде:
А + В
[А]пк = +1518 (10) = 00. 0001 0101 0001 1000
[B]пк = -3628 (10) = 11. 0011 0110 0010 1000

следовательно
[B]ик = 11. 1100 1001 1101 0111
По идее должно получиться -2110 (10)

00. 0001 0101 0001 1000 [A]ок
+
11. 1100 1001 1101 0111 [B]ик
-----------------------------
11. 1101 1110 1110 1111
если подгонять под заранее расчитанный результат, то на этом шаге надо и остановиться, а потом просто сделать инверсию:
11. 0010 0001 0001 0000 = -2110 (10)
но по правилам надо делать коррекцию +1010 в тетрадах, где не было переноса, т.е. во всех тетрадах здесь:
11. 1101 1110 1110 1111
+
1010 1010 1010 1010
-----------------------
11. 0111 1000 1000 1001 = -7889
если отнимать от каждой тетрады 0110, то получается тоже -7889,
если отнимать 1010 или прибавлять 0110, то получается -3445.

Подскажите, пожалуйста, в чём моя ошибка, и как добиться нормального результата.
Заранее спасибо

P.S. А то я уже 2 раза отсылал эту контрольную, 2 недели разбираюсь с арифметикой и исчерпал все известные мне варианты smile.gif Буду очень благодарен за помощь
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 23.5.2012, 3:53