Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизСложение чисел в 2ичной системе счислени! Найти похожие ветки
← →
JediMaster (2004-02-05 12:51) [0]Требуется сложить два числа в двоичной системе, как это сделать программно, как складывать я знаю, но в Паскале как это сделать? Как строки?
← →
panov (2004-02-05 12:54) [1]Перевести в число-->сложить-->пеервести обратно в строку с единицами и нулями
← →
Тимохов (2004-02-05 12:56) [2]ПевоеЧисло+ВтороеЧисло
Если тебе удаться сложить не в 2ичной системе - респект тебе большой.
← →
JediMaster (2004-02-05 12:56) [3]Thx :)
только так можно?
← →
Юрий Зотов (2004-02-05 13:13) [4]1. Добить менее длинную строку слева нулями до длины большей.
2. В нисходящем цикле посимвольно "складывать" прямо в "двоичной" системе, запоминая перенос в отдельной переменной.
← →
Sandman25 (2004-02-05 13:17) [5][4] Юрий Зотов © (05.02.04 13:13)
Точно. Получим аналог BCD.
← →
Тимохов (2004-02-05 13:18) [6]А работать то как быстро будет - просто песня :))
← →
Sandman25 (2004-02-05 13:20) [7][6] Тимохов © (05.02.04 13:18)
Вы иронизируете? Если да, то зря. IntToStr выполняется гораздо дольше.
← →
Тимохов (2004-02-05 13:22) [8]
> IntToStr
При чем здесь это?
Вроде речь шла про двоичное сравнение...
← →
Sandman25 (2004-02-05 13:24) [9][8] Тимохов © (05.02.04 13:22)
Перевод из строки "1001" в число 9 является аналогом StrToInt, а обратный перевод - аналогом IntToStr. И без этих переводов не получить из "101" и "100" строку "1001".
Именно из-за этого замедления изобрели BCD формат, который я упоминал.
← →
Юрий Зотов (2004-02-05 13:26) [10]> Тимохов © (05.02.04 13:18) [6]
IMHO, задача чисто учебная. Соответственно, от человека требуется продемонстрировать знание двоичной арифметики, а не умение программировать.
← →
Тимохов (2004-02-05 13:30) [11]
> Юрий Зотов © (05.02.04 13:26) [10]
Вы как всегда правы.
← →
S.P.V (2004-02-05 13:53) [12]Может и тупо но я делаю такими функциями
function IntToBin(Value: Int64;Size: Integer): String;
var
i: Integer;
begin
Result:="";
for i:=Size downto 0 do
if Value and (1 shl i)<>0 then
Result:=Result+"1"
else
Result:=Result+"0";
end;
function BinToInt(Value: String): LongInt;
var
i,Size: Integer;
begin
Result:=0;
Size:=Length(Value);
for i:=Size downto 0 do
if Copy(Value,i,1)="1" then
Result:=Result+(1 shl i);
end;
← →
panov (2004-02-05 14:00) [13]>Юрий Зотов © (05.02.04 13:26) [10]
> Тимохов © (05.02.04 13:18) [6]
IMHO, задача чисто учебная. Соответственно, от человека требуется продемонстрировать знание двоичной арифметики, а не умение программировать
Ну тогда столбиком-)
← →
Anatoly Podgoretsky (2004-02-05 14:08) [14]panov © (05.02.04 14:00) [13]
Оно и предложено и по дидактике именно оно и нужно, а не перевод во внутреннее и обратно.
← →
Юрий Зотов (2004-02-05 14:24) [15]> panov © (05.02.04 14:00) [13]
Так я и предложил именно столбиком
:о)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c