Показать сообщение отдельно
  #6  
Старый 23.04.2010, 00:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну не знаю на счет оптимизации...

Код:
function BitCount(B : Byte) : Byte;
const
  cMask = 1;
begin
  Result := 0;
  While B <> 0 Do
    Begin
      Result := Result + (B And cMask);
      B := B SHR 1;
    End;
end;

Быстрее, разве только на асме переписать. Ну или совсем быстрый вариант - массив готовых значений и входной байт есть индекс. Извини, это писать просто лень (256 значений). Хотя можно сгенерить с использованием представленной функции.
Ответить с цитированием