![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Представить число в двоичном виде.
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;