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

Вниз

Представить число в двоичном виде.   Найти похожие ветки 

 
AlexanderMS ©   (2007-07-05 18:56) [0]

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


 
{RASkov} ©   (2007-07-05 19:15) [1]

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

 
 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;


 
Apollon ©   (2007-07-05 19:31) [2]


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;


 
Apollon ©   (2007-07-05 19:48) [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;


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

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


 
AlexanderMS ©   (2007-07-06 05:31) [5]

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



Страницы: 1 вся ветка

Текущий архив: 2007.07.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
15-1182954688
Andy BitOff
2007-06-27 18:31
2007.07.29
Третья версия лицензии GPL будет выпущена на этой неделе


2-1183419596
DagOT-R
2007-07-03 03:39
2007.07.29
Всё о трее


2-1183709585
Kolan
2007-07-06 12:13
2007.07.29
Динамическое создание пунктов меню, как реализовать событие&amp;#133


15-1182959422
Riply
2007-06-27 19:50
2007.07.29
Восстановление "мыслительных способностей" ( если они есть :).


15-1183264622
koha
2007-07-01 08:37
2007.07.29
Просмотрел фильм "Курск Субмарина в мутной воде"