Pascal/Turbo Pascal - ayuda para pasar decimal a binario

 
Vista:

ayuda para pasar decimal a binario

Publicado por juan (19 intervenciones) el 14/11/2009 04:40:23
pues tengo que hacer un programilla que pase de decimal a binario sea positivo o negativo. pero lo tendria que hacer sin funciones, osea solo con los bucles simples como while if y repeat, los datos son:

si el nº es positivo que ponga tantos ceros como maxint permita hasta los digitos en binario, si es negativo pues hay que dar el resultado con tantos unos como maxint permita y en complemento a 2, y de nota me dan {Para escribir un número negativo, se puede hacer lo siguiente: primero se escribe un “1” (correspondiente al signo); después se transforma el número en el entero positivo que
tiene los dígitos complementados (es decir, el “complemento a 1” del número, que se
puede obtener como -num-1); finalmente, basta utilizar el algoritmo anterior para
escribir los dígitos binarios correspondientes a este último número, pero
complementados.} pero no logro averiguar que significa.

ejemplos:
-1 ---> 11111111111111111111111111111111
23 ---> 00000000000000000000000000010111
-87 ---> 11111111111111111111111110101001
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda para pasar decimal a binario

Publicado por edwin (71 intervenciones) el 14/11/2009 04:48:55
hasta que numero tienes limite ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para pasar decimal a binario

Publicado por edwin (71 intervenciones) el 14/11/2009 05:00:40
esta es una manera , hay muchas, te dejo un byte;

const
ArregloValor : array [1..8] of integer = (1,2,4,8,16,32,64,128);
var
Posicion,contador :integer;
ArregloEncendido : array [1..8] of integer;
Begin
valor:=100; // no mayor a un byte
{inicializamos el vector}
For contador:=1 to 8 do
ArregloEncendido[Contador]:=0;

{comparamos valor decrementandolo hasta llenar el arreglo}
For contador:= 8 downto 1 do
Begin
If Valor >= ArregloValor[Contador] then
Begin
Valor := Valor-ArregloValor[contador];
ArregloEncendido[contador]:=1;
End;
End;

{presentamos dato }
For contador:=1 to 8 do
write(ArregloEncendido[Contador]);

End.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para pasar decimal a binario

Publicado por juan (19 intervenciones) el 14/11/2009 14:27:09
gracias por la ayuda tan rapida, el maxint es el 2^30 que por suerte no lo tengo que poner en funcion ya que justo es (maxint+1)/2 que es el 2^30, el problema mayor lo tengo en lo de pasar un numero negativo a binario ya que no entiendo la nota que nos dan con con eso de complemento a 1 siendo los resultados estando complementados a 2 y eso de -num-1, y edwin, lo que me pusiste creo que no me sirve ya que no he estudiado algunas cosas que pusiste, te agradeceria mucho si me explicaras lo de la nota de pasar negativo a binario si lo entendiste o como hacerlo, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para pasar decimal a binario

Publicado por juan (19 intervenciones) el 14/11/2009 19:53:03
nada ya esta, al final de alguna forma me paso por la cabeza la forma de calcular los negativos, gracias de todos modos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para pasar decimal a binario

Publicado por jesus (1 intervención) el 24/11/2009 01:14:44
a mi hijo le encargaron convertir el numero 804 a binario pero quieren todo el procedimiento, alguien me puede ayudar por favor. se los agradeseria mucho . gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda para pasar decimal a binario

Publicado por Sebastian (2 intervenciones) el 03/09/2012 22:19:37
te paso el código, este funciona a la perfeccion:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program DecimalABinario;
uses crt;
var a:longint;
var seguir: char;
 
procedure decimal_a_binario ( numero : longint );
var aux1,aux2 : longint;
var contador, contadorAux: byte;
var V_escritura: array [0..30] of integer;
 
begin
	contador:= 1;
	while numero > 0 do
	begin
		aux1 := numero div 2;
		aux2 := numero mod 2;
 
		numero := aux1;
		V_escritura[contador] := aux2;
 
		contador:=contador+1;
 
	end;
 
	contadorAux := contador-1;
 
	repeat
		begin
			write(V_escritura[contadorAux]);
			contadorAux:= contadorAux-1;
 
		end;
	until contadorAux=0;
 
 
end;
 
begin
repeat
write('Ingrese un numero: ');
readln(a);
write('Su conversion a binario es: ');
decimal_a_binario(a);
writeln();
write('Desea convertir otro numero? s/n: ');
readln(seguir);
until seguir='n';
 
 
readkey();
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar