Cita:
Empezado por Panasys
Ahora cuando trabajo con pocas entradas no pasa nada, el codigo es corto y rapido, pero si tengo que procesar 8 bits se complica ya que obtengo de 0 a 255 combinaciones posibles entre esos bits!
hay algun metodo que yo pueda usar para decirle oye cuenta pero solo los impares hasta 255??? y el bit 2 cuenta 2,4 7,8 etc?
|
Al leer tu segundo post veo que hablas de 'bits' no de bytes por lo que pareciera que querés obtener la sumatoria
de los 'bits' pares e impares recibidos...
Si no entiendo mál y es eso lo que buscas, podrías hacer:
Código Delphi
[-]
procedure SumaBitParImpar(Num: Integer; var Par, Non: Integer);
var
i,c : Byte;
begin
c:= 0;
for i:= 0 to 7 do
if (Num shr i) and 1 = 1 then Inc(c);
if Num and 00000001 = 1 then Non:= Non + c
else
Par:= Par + c
end;
Ejemplo de llamada:
Código Delphi
[-]
...
var
i: Integer;
Par, Non: Integer;
begin
Par:= 0;
Non:= 0;
for i:= 1 to 3 do
SumaBitParImpar(i,Par,Non);
ShowMessage(Format('Par: %d Impar: %d',[Par,Non]));
end;
Lo que te arroja el mensaje: 'Par: 1 Impar: 3' dado que:
1 = 01 (un bit número impar)
2 = 10 (un bit número par)
3 = 11 (dos bits número impar)
Es sólo un ejemplo, modificando un poco el código podes hacer que solo haga el conteo de bits por numero recibido, o en última instancia, espero que te aporte alguna idea...
Saludos.
