Q:

Как посчитать количество бит, установленных в 0 в коде ASCII для английских букв?

Имеется массив (ch) английских букв 'A-Z' 'a-z'. Надо посчитать количество бит, установленных в 0 в коде ASCII для этих букв. Получилось следущее:
  for k := 0 to 8 * sizeof(char) do
  begin
     if ch[k] and (1 shl k) = 0 then
     kbit := kbit + 1;
  end;

Что здесь нужно сделать, чтобы корректно побитово умножить символ и число?

A:

Функция на языке паскаль (его изучение должен рассматривать комитет по защите прав человека)
function nzerobits (ch: array of char):integer;
var i, ones, ch1: integer;
begin
    (* количество единичек *)
    ones := 0;
    for i:=low(ch) to high(ch) do 
    begin
        ch1 := integer(ch[i]);
        while(ch1 <> 0) do
        begin
            ch1 := ch1 and (ch1 - 1);
            inc(ones);
        end;
    end;
    (* количество нулей *)
    nzerobits := (high(ch) - low(ch) + 1) * 8 - ones
end;

Дополнение: @Vahan Av посоветовал заменить сишную конструкцию ch1 := integer(ch[i]) на изначально паскалевскую ch1 := ord(ch[i]); Кому надо, тот поменяет.

