|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.02.2012, 22:49 | #1 |
Регистрация: 06.02.2012
Сообщений: 8
|
Умножение длинных целых в паскале
Необходимо умножить два длинных целых числа в двоичной системе счисления в дополнительном коде. Программа считывает строку выделяет из нее число, переводит в двоичный вид в дополнительный код, перемножает и выдает результат в ДОПОЛНИТЕЛЬНОМ коде. Проверяла несколько раз. не могу понять почему он перемножает неправильно. Помогите пожалуйста, в чем ошибка?
Текст программы: Код:
Последний раз редактировалось Olven; 06.02.2012 в 23:15. |
06.02.2012, 23:10 | #2 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 28
|
Блин, впадло во всем этом разбираться...
вот тебе код с делфи 2 - 10 когда то делал: Код:
Код:
Кстати, вставь свой код в ВВ код (#), это упростит чтение твоего кода... Если конечно код не линеечный))) |
06.02.2012, 23:14 | #3 | |
Регистрация: 06.02.2012
Сообщений: 8
|
Цитата:
я тут только зарегистрировалась,не разобралась как в вв вставлять) нет, код не линейный) |
|
06.02.2012, 23:46 | #4 |
Регистрация: 06.02.2012
Сообщений: 8
|
разобралась
|
06.02.2012, 23:58 | #5 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 28
|
Сделала, все работает?)
|
07.02.2012, 00:06 | #6 |
Регистрация: 06.02.2012
Сообщений: 8
|
для беззнаковых да) нужно для отриц... в общем еще думать и думать)
|
07.02.2012, 00:12 | #7 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 28
|
А для отрицательных, можешь сделать так: убираешь минус, перемножаешь, и добавляешь минус (если он был один). А код выше, то код для Delphi, с двоичной в десятичную и обратно)
|
07.02.2012, 00:15 | #8 |
Регистрация: 06.02.2012
Сообщений: 8
|
так просто к сожалению не получится... умножение в дополнительном коде там правила определенные..
|
07.02.2012, 00:18 | #9 |
Регистрация: 06.02.2012
Сообщений: 8
|
res:=0; {ymnozenie}
k:=0; n:=1; while k<=por do begin temp:=n and b; if temp<>0 then res:=res+a; a:=a shl 1; n:=n*2; k:=k+1; end; можешь объяснить почему в этом блоке если вместо переменной por написать 8 допустим или другое число начинает правильно работать все. хотя por это как раз число того сколько это нужно все повторить. может ты увидишь что там |
07.02.2012, 00:25 | #10 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 28
|
Что используешь? Какой компилятор?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Tasm]Сложение/Умножение длинных чисел | falcon92 | Помощь студентам | 0 | 17.11.2010 15:34 |
Умножение двух длинных целых чисел, представленных двунаправленными связанными списками | Rifler | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 28.05.2010 19:31 |
Умножение длинных чисел в Pascal | SeRhy | Помощь студентам | 2 | 04.12.2008 23:50 |
Умножение длинных чисел | SeRhy | Помощь студентам | 1 | 28.11.2008 20:04 |
Умножение длинных целых чисел | Rifler | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 04.06.2008 21:12 |