Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Сложение чисел в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
3-53365
rosl
2004-01-28 02:42
2004.02.17
принять данные из excel


1-53625
ke_ke
2004-02-06 15:31
2004.02.17
Изменение направления текста


14-53760
ee
2004-01-28 00:32
2004.02.17
ee


1-53535
[lamer]Barmaglot
2004-02-09 09:10
2004.02.17
Построение автомата...


1-53482
Max_Ivanych
2004-02-06 10:32
2004.02.17
Как можно передать сообщение DOS-программе?