Re: Как закодировать?

From
Andrew Ezhguroff ()
To
Mike Makhov
Date
2002-10-08T13:46:59Z
Area
RU.ALGORITHMS
From: "Andrew Ezhguroff" <eandr@com2com.ru>

Привет! "Mike Makhov" <Mike.Makhov@f909.n5020.z2.fidonet.org>  сообщил(а):

 AE>> А вот в СТАНДАРТНОМ (борландовские извращения меня не интересуют)
 AE>> Паскале битовых операций и сдвигов для целых нет.
 MM> Конечно нет ;-(
 MM> procedure PrintBin(Val: integer);
 MM> var
 MM>   Tmp: Char;
 MM> begin
 MM>   Tmp := Char(Val and 1) + '0';
 MM>   Val := (Val shr 1) and MaxInt;
 MM>   if LongBool(Val) then PrintBin(Val);
 MM>   Write(Tmp);
 MM> end;

Почти точный перевод (у меня скоре if Val<>0 then PrintBin(Val);) на Borland
Pascal.

На Паскале Вирта (которому меня обучали много лет назад) будет что-то вроде:

procedure PrintBin(Val: integer);
  var Tmp: char;
begin
  Tmp:=chr(Val mod 2+ord('0'));
  Val:=Val div 2;
  if Val<0 then Val:=Val+MaxInt+1;
  if Val<>0 then PrintBin(Val);
  write(Tmp)
end;

С уважением, Андрей.


-- 
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
 * Origin: Talk.Mail.Ru (2:5020/400)