Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Представить число в двоичном виде.


AlexanderMS ©   (2007-07-05 18:56:00) 

Скажите, пожалуйста, как оптимальнее представить число типа integer в виде массива c 32 элементами, представляющими собой соответствующие биты данного числа? Знаю, как реализовать "ручной" алгоритм (делим столбиком, потом записываем остатки и т. п.), но хотелось бы как-нибудь покрасивей и покороче. Чтобы и машине приятно было :).


AlexanderMS   (2007-07-06 05:31:00) [1]

Большое спасибо всем.


Дмитрий К   (2007-07-05 20:07:00) [2]

А я делал так:
   r[i] := Byte((n and (1 shl i)) = (1 shl i));


Apollon   (2007-07-05 19:48:00) [3]

сор, наврал малость


var
i, n: integer;
r: array[0..31] of byte;
begin
n := 5000;
for i := 0 to 31 do
  r[i] := n shl i shr 31;
end;


Apollon   (2007-07-05 19:31:00) [4]


var
 i, n: integer;
 r: array[0..31] of byte;
begin
 n := 5000;
 for i := 0 to 31 do
   r[i] := n shl i shr (31 - i)
end;


{RASkov}   (2007-07-05 19:15:00) [5]

Вот вроде так :)

 
 S:='';
 repeat
  K:= N div 2;
  if (N mod 2)>0 then S:='1'+S else S:='0'+S;
  N:=K;
 until  N<=0;


где N - это и есть то число которое нужно "представить" : Int64
   K - временная переменная : Int64
   S - строка результата : String;


Наверх

Титульная страница Поиск, карта сайта Написать письмо