PDA

Просмотр полной версии : Деление двоичных чисел


Дикс
03.11.2006, 21:40
не нашел ветки, более подходящей для вопроса.

Долго ломал голову, но так и не догнал.
Нужно поделить 11110 на 110

В мануале такой пример
http://img441.imageshack.us/img441/8/0101010101lt9.gif

от 11110 отнимают 110
и дальше почему-то идёт опять 110 (это же не ответ, 30-6=24)
затем ноль не пишут (тогда из каких соображений его вообще взяли?)
и потом опять 110

вобщем два вопроса: почему в третьей строке вместо ответа стоит 110
и из каких соображений вообще брали ноль (в числе 101)

надеюсь кто-нить поможет

Ch3ck
03.11.2006, 22:14
Когда-то в своё время экзамен по ассемблеру сдавал(фу бяка какая, фу) пользовался вот этим:
_http://www.dstu.edu.ru/informatics/mtdss/part1.html
(ну не совсем этим, но похоже. А вообще лекциями в основном)
Чё-т похожее...
_http://forum.ixbt.com/topic.cgi?id=26:35304

nc.STRIEM
03.11.2006, 22:55
перевели в десятичную систему, раздели а потом опять в двоичную! всегото...

а ошибка в том что 11110-110=11000 а не 110! при вычитание выравнивать надо по правому краю!)) в переди можно дописоват скок угодно нулей
вот:
11110
00110
11000

Дикс
04.11.2006, 16:41
аа, они меня пытаются наипать, я и в другом примере подобное замечал, пока сам не решил, не мог понять как у них получилось
спасиб, попробую

хотелось бы уточнить потому что в статье не написано прямым текстом:
1-1 = 0
1-0 = 1
0-1 = 0
0-0 = 1
правильно?

Talisman
04.11.2006, 16:46
аа, они меня пытаются наипать, я и в другом примере подобное замечал, пока сам не решил, не мог понять как у них получилось
спасиб, попробую

хотелось бы уточнить потому что в статье не написано прямым текстом:
1-1 = 0
1-0 = 1
0-1 = 1
0-0 = 1
правильно?
0-0=0 ИМХО

Дикс
04.11.2006, 16:48
а, мля
вот
1-1 = 0
1-0 = 1
0-1 = 1
0-0 = 0
самый правильный вариант, пасиба

2Dr.Check
пасиб за ссылки

nc.STRIEM
04.11.2006, 23:37
и когда 0-1 = 1 еще 1 заниаеться у впереди стоящего разряда))
например:
100
010
010

Дикс
05.11.2006, 01:31
1011011101001 / 1110011
-1110011000000 | 110011
-----------------------
1001000101000
- 1110011000000
-----------------------
1110001001
- 1110011
-----------------------
1111010

вопрос такой: когда я составляю ответ (последняя строчка), надо ли в него вписывать те две единицы, что я выделил жирным?
и ещё как мне вообще узнать когда в ответ вписывать нули, чтобы сместить число?
или специально подставляют нужное кол-во нулей, чтобы двигать число вправо и отсекать те цифры, что остаются слева? (выделены жирным)

nc.STRIEM
05.11.2006, 16:39
Дикс! Чтобы легче было из числа вычитать число, есле в дном числе меньше цифр чем в другом, то добовляй нули впереди! тоесть: есле ты хочеш сделать 1110001001-1110011
то запиши это как 1110001001-0000111001 далее:
1110001001
0000111001
1101010000
и все)) когда мы делаем 0-1 то занимаем 1 у впереди стоящаего разряда и ответ будет 1! короче при вычитание (есле делаеться 0-1) можно то число ( в данном случае 1110001001) записать так 1101121001 и потом проводить вычитание!

Micr0b
05.11.2006, 17:28
имхо ничего новоги неузнал чесно.. но даже незнаю или бужет полезн ето новичкам.))
лутше сразу книгу купить и все.))) но всеравно за старания как всегда +

Дикс
05.11.2006, 20:15
nc.STRIEM
ты был неправ по поводу 0-1 = 0
потому что надо занимать единицу из старшего разряда
к примеру

01001-
00011
---------

1-1=0
затем занимаем единицу, отмеченную подчёркиванием
(она становится нулём, а нуль, идущий после неё, напротив - единицей)
10-1=1
1-0=1
0-0=0
0-0=0

в связи с этим тоже вопрос:
а если такая ситуация
1011-
1101
---------

1-1=0
1-0=1
занимаем подчёркнутую единицу
10-1=1
и теперь вот чего получается:
в первом столбце у нас
0-1
а занять уже неоткуда =\

MS calc выдает
11111111111111111111111111111111111111111111111111 11111111111110 %)))

в десятичной системе это 11-13
из этого следует вывод что нельзя получить отрицательное число в двоичной системе :)

nc.STRIEM
05.11.2006, 21:09
nc.STRIEM
ты был неправ по поводу 0-1 = 0

Чет я так и не понял де я был не прав?? В предыдущих постах я все правильно написал! и там написано 0-1=1 и единица занимаеться у впереди стоящего разряда! Вобщето так и есть))
а в ситуации 1011-1101 тут уже другой алгоритм
1011 это 11 в десятичной а 1101 это 13! дак вот алгоритм такой мы 11 переводим в отрицательное число, и потом складываем! тоесть -11+13! ток это все в двоичной системе!


MS calc выдает
11111111111111111111111111111111111111111111111111 11111111111110

Это и есть правильный ответ! т.к. в отрицательных числах все старшие разряды превращаються в 1

Zadoxlik
12.11.2006, 18:25
1011-
1101

Точно так же как в 10ой =] Вычти второе из первого и пририсуй знак минус =]

Zadoxlik
12.11.2006, 18:27
В компьютере вычитание чисел выполняется сложением в обратных/дополнительных кодах :Р

nc.STRIEM
12.11.2006, 18:38
Точно так же как в 10ой =] Вычти второе из первого и пририсуй знак минус =]
отжог)))))