GARANTIR DESCONTO

Fórum Desmembrando um Numero #205379

09/01/2004

0

caros colegas,

eu gostaria de saber se algem pode m ajudar. Meu problema é o seguinte eu tenho um numero qualquer em decimal e tenho que transformalo em binario ....
até ai blz soque depois disso eu tenho que desmembrar-lo..... para que eu possa trabalhar com cada bit desse numero se alguem puder m ajudar agradeço desde ja....


Zumbi

Zumbi

Responder

Posts

09/01/2004

Ari Marcolino

Transforme o resultado numa string e crie uma array que contenha os caracteres dessa string, daí pra frente é só usalos como desejar.

Abraços,
Ari Marcolino


Responder

Gostei + 0

09/01/2004

Zumbi

ok...

mas o que eu preciso mesmo é de ajuda para criar uma função que receba um numero e dentro dela transorme o numero decimal em binario depois devolver um vetor contendo o valor em binario separado em cada parte do vetor....

ok ou ta complicado de entender????

se achar melhor para m dar umas ideias de como desenvolver isso pelo msn o meu é pedroalves82@hotmail.com

flw..


Responder

Gostei + 0

09/01/2004

Marcelo Saviski

não sei, mas é só uma idéia, estou sem Delphi para testar

Isso funcionaria?

TBitSet = set of (B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, .... até B32);


um set é uma forma de manipular conjuntos não é?
var
  NumeroBinario: TBitSet;



...

  NumeroBinario := TBitSet(50);

  if B1 in NumeroBinario then Bit1Ativo;
  if B2 in NumeroBinario then Bit2Ativo;


Isso funfa?

ou tambem vc pode fazer assim:

para saber se o bit 15 esta ativo:
  if Numero and (1 shl 15) <> 0 then
    Bit1Ativo
  else 
    Bit1Desligado;



Responder

Gostei + 0

09/01/2004

Zumbi

isso é um tipo correto eu criaria em type ...

TBitSet = set of (B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, .... até B32);

essa passagem o que significa..

NumeroBinario := TBitSet(50);



eu utilizo este algoritmo para transformar o numero para binario...

[b:8cdff9d38e]function IntToBin(Value: LongInt;Size: Integer): String;
{Converte uma string em binário}
var
i: Integer;
begin
Result:=´´;
for i:=Size downto 0 do
begin
if Value and (1 shl i)<>0 then
begin
Result:=Result+´1´;
end
else
begin
Result:=Result+´0´;
end;
end;
end;[/b:8cdff9d38e]


mass eu quero que eu passe o num. e ele ja m devolva em um vetor ... ok...


Responder

Gostei + 0

09/01/2004

Deus

Olha.. se ele está retornando uma string, então você já tem um vetor! Um vetor de caracteres! É só percorrer o resultado [i:71abe8af1d]char[/i:71abe8af1d] por [i:71abe8af1d]char[/i:71abe8af1d], como, por exemplo:

varString := IntToBin(34);
for i := 1 to Length(varString) do
  if varString[i] = 0 then
    showMessage(´Bit de numero ´ + IntToStr(i) + ´ - desligado!´)
else
    showMessage(´Bit de numero ´ + IntToStr(i) + ´ - ligado!´);


Ah, e o seu código tem begin / end demais! :) Ele mais enxuto seria:

function IntToBin(Value: LongInt;Size: Integer): String; 
var 
  i: Integer; 
begin 
  Result:=´´; 
  for i:=Size downto 0 do 
    if Value and (1 shl i)<>0 then 
      Result:=Result + ´1´; 
    else 
      Result:=Result + ´0´; 
end;


Abraços, dEUS.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar