PDA

Ver la Versión Completa : Representacion numerica


mario2000
16-10-2008, 16:08:27
Hola amigos: Me canse de buscar pero no encuentro como representar numeros binarios en delphi.

Aca tengo las formas de representaciones mas comunes en delphi:

Decimal: se escribe como siempre.
Hexadecimal: se cola el signo $ delante. Ejemplo: $0f, $1A...
caracter: se coloca una ' antes y despues ' ejemplo 'a'

me faltan la octal y la binaria. Es que cuando se quiere hacer programas para micros esta es una forma muy practica de trabajar. Les agradesco su colaboracion :)

MasterXP
16-10-2008, 17:47:09
No entiendo bien tu pregunta, no te bastaria con convertir de Decimal(o cualquier otra base) a Binario y asi con los octales y demas.

Podrias dar mas detalle.

egostar
16-10-2008, 18:01:31
Hola

Tal vez estoy pecando de ingenuo, pero pienso que al final lo que se transmite son caracteres, es decir, no importa si el valor es hexadecimal, octal, decimal e incluso en fomato HTML.

Es decir, es lo mismo enviar 65 decimal que 41 hexadecimal que 101 octal que & #65; HTML al final lo que estas enviando es el caracter 'A'.

Salud OS

TOPX
16-10-2008, 19:01:17
Hola,

Ahora yo, con mi interpretación de la cuestión; que espero no estar enredando las cosas.

Pues, ya que este hilo está en "ASM y Microcontroladores (http://www.clubdelphi.com/foros/forumdisplay.php?f=44)", es posible que trate de Assembler "en línea" y que lo que busque esté aquí (http://docs.codegear.com/docs/radstudio/radstudio2007/RS2007_helpupdates/HUpdate3/EN/html/devcommon/assemblyexpressions_xml.html#45787072657373696F6E20456C656D656E7473).

JoseFco
16-10-2008, 19:19:21
Hola amigos: Me canse de buscar pero no encuentro como representar numeros binarios en delphi.

Aca tengo las formas de representaciones mas comunes en delphi:

Decimal: se escribe como siempre.
Hexadecimal: se cola el signo $ delante. Ejemplo: $0f, $1A...
caracter: se coloca una ' antes y despues ' ejemplo 'a'

me faltan la octal y la binaria. Es que cuando se quiere hacer programas para micros esta es una forma muy practica de trabajar. Les agradesco su colaboracion :)

¿Sera esto lo que quieres? 00110010b Puede que lo que quieres es convertir esto 3 en esto 00000011b .


Como dices la reprecentacion por eso pence en la primera: 00110010b lo he encontrado en codigo Pascal.


function IntToBin ( value: LongInt; digits: integer ): string;
begin
result := StringOfChar ( '0', digits ) ;
while value > 0 do begin
if ( value and 1 ) = 1 then
result [ digits ] := '1';
dec ( digits ) ;
value := value shr 1;
end;
end;

function BinToInt(Value: String): LongInt;
var i: Integer;
begin
Result:=0;
//remove leading zeroes
while Copy(Value,1,1)='0' do
Value:=Copy(Value,2,Length(Value)-1) ;
//do the conversion
for i:=Length(Value) downto 1 do
if Copy(Value,i,1)='1' then
Result:=Result+(1 shl (Length(Value)-i)) ;
end;




Un Saludo.

egostar
16-10-2008, 19:24:00
Hola,

Ahora yo, con mi interpretación de la cuestión; que espero no estar enredando las cosas.

Pues, ya que este hilo está en "ASM y Microcontroladores (http://www.clubdelphi.com/foros/forumdisplay.php?f=44)", es posible que trate de Assembler "en línea" y que lo que busque esté aquí (http://docs.codegear.com/docs/radstudio/radstudio2007/RS2007_helpupdates/HUpdate3/EN/html/devcommon/assemblyexpressions_xml.html#45787072657373696F6E20456C656D656E7473).

Pues como digo, tal vez me equivoque con el requerimiento de mario2000, pero esto funciona en delphi con ASM.


procedure WritePort(Port: word; Value: byte);
asm
push word ptr Port
mov al, Value
pop dx
out dx, al
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WritePort(1016,ord('A'));
WritePort(1016,65);
WritePort($3F8,65);
WritePort($3F8,$41);
end;


Salud OS

mario2000
16-10-2008, 22:52:01
Hola amigos gracias por sus respuestas, acerca de la representacion numerica en delphi lo que quiero es hacer esto:

Por ejemplo si tengo una variable asi:

var
dat:byte;
begin
dat:=$0f;
end;

con representacion binaria quedaria si fuese con el signo digamos % como en mikropascal claro pero en delphi asi :
var
dat:byte;
begin
dat:=%00001111;
end;

asi si por ejemplo quiero cambiar un bit solo tengo que cambiar el bit sin preocupaciones de esta manera digamos que es el bit 2 de 1 a 0 asi:

var
dat:byte;
begin
dat:=%00001011;
end;

ya me entienden es por comodidad ya que estoy trabajando con puertos y nesesito que la cosa no se me complique :p

Gracias por vuestros comentarios :) espero que ahora si puedan alludarme :rolleyes:

JoseFco
16-10-2008, 23:04:21
Hola amigos gracias por sus respuestas, acerca de la representacion numerica en delphi lo que quiero es hacer esto:

Por ejemplo si tengo una variable asi:

var
dat:byte;
begin
dat:=$0f;
end;

con representacion binaria quedaria si fuese con el signo digamos % como en mikropascal claro pero en delphi asi :
var
dat:byte;
begin
dat:=%00001111;
end;

asi si por ejemplo quiero cambiar un bit solo tengo que cambiar el bit sin preocupaciones de esta manera digamos que es el bit 2 de 1 a 0 asi:

var
dat:byte;
begin
dat:=%00001011;
end;

ya me entienden es por comodidad ya que estoy trabajando con puertos y nesesito que la cosa no se me complique :p

Gracias por vuestros comentarios :) espero que ahora si puedan alludarme :rolleyes:

Hola Mario.
Estas trabajando con puertos y no te quieres complicar.Una pregunta ¿tu lo que quieres es a la hora de programar poder visualizar los pines del puerto?
¿Es por eso que quieres ponerlos en binario?

Un Saludo.

JoseFco
16-10-2008, 23:57:28
Hola Mario.

No se porque llamas complicarte trabajar con hex.

La metrica es muy simple y un programador de micros debe dominarla sin mucho problema:

Binarios: 0 0 0 0 1 0 1 0 b

Decimal: 10

Hex: 0A

Si partimos de binarios : 00001010b los separamos en dos grupos de 4 tenemos 0 0 0 0 1 0 1 0 b

sus valores decimal son 128 64 32 16 8 4 2 1 es lo que valen

estos bits su suma total = 255 Dec

Los Hex son los mas nobles de todos: son dos caracteres 0A en el caso del ejemplo 00001010 Bin > 10 Dec > 0A Hex

Separamos los hex en dos 0 A cada uno de ellos tiene 4 bits 1010b

0 0 0 0 estos son los menos significativos bits de un byte su valor minimo "0" su valor maximo 15 si los tenemos todos a 1 1 1 1 = 15 dec = A hex

solo son 16 a memorizar y si nos fijamos en elgo el bit 0 solo estara a 1 si el numero es none (impar) nunca estara seteando en los numeros pares.;)

porque decimos que 1 0 1 0 = 10 dec y A hex muy facil solo estan dos de los 4 bits seteados a 1 el que vale 8 y el que vale 2 , 8+2=10 dec despues del 9 en hex tenemos la A .

A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

Un hex como decia esta compuesto por dos caracteres "0A"

si los miras asi 5AH los separas en tu mente y dices 5 tiene el primero seteado porque impar;) ya sabes que tienes el primero "1" uno mas 4 es 5 bingo! 0 1 0 1 tienes los 4 mas significativos bit del byte.
entonces tenemos A que es 10 dec el primero no estara seteado porque es pare.;) entonces tenemos que 8 y 2 son 10=Ah 1 0 1 0 bingo!

0101 1010 = 5AH


Cuando dominas esta metrica no tienes problemas en con una pasadita de vista decir tal o mas cual.


Un Saludo.


PD: Para programar micros no hace falta aprenderte esta metrica.Pero si la dominas muchas cosas podras ver dentro de los files Intelhex, Hex y Binarios.

mario2000
17-10-2008, 00:52:37
Eso ya lo sabia, pero por las respuestas parese que no existe esa representacion en delphi, de todas maneras si alguien sabe si se puede muchas gracias. :cool:

egostar
17-10-2008, 01:09:35
Eso ya lo sabia, pero por las respuestas parese que no existe esa representacion en delphi, de todas maneras si alguien sabe si se puede muchas gracias. :cool:

Insisto, tu puedes convertir un valor hexadecimal o decimal a Binario, lo que no entiendo es para que quieres enviarlo forzosamente como binario si al final lo que envias al puerto siempre es un byte.

Salud OS

JoseFco
17-10-2008, 01:15:42
Insisto, tu puedes convertir un valor hexadecimal o decimal a Binario, lo que no entiendo es para que quieres enviarlo forzosamente como binario si al final lo que envias al puerto siempre es un byte.

Salud OS

Que no es un byte chaval ...... son ocho bits .. o sea una chorrera de 0 y 1:D:D:D

A que la cancion mi cuate.;)

Un Saludo.

PD:BinToBin :D

mario2000
17-10-2008, 14:16:22
Insisto, tu puedes convertir un valor hexadecimal o decimal a Binario, lo que no entiendo es para que quieres enviarlo forzosamente como binario si al final lo que envias al puerto siempre es un byte.

Salud OS

Es por comodidad y costumbre pero por favor digan los expertos en delphi si es o no posible es todo lo que quiero saber gracias :)

poliburro
17-10-2008, 16:16:46
Es por comodidad y costumbre pero por favor digan los expertos en delphi si es o no posible es todo lo que quiero saber gracias :)


con quien cres que estás hablando????????? :eek: :eek: :eek:

cHackAll
17-10-2008, 16:22:12
Es por comodidad y costumbre pero por favor digan los expertos en delphi si es o no posible es todo lo que quiero saber gracias :)

En delphi eso no es posible, pero al final solo son formas de representar los datos los cuales al final son en su totalidad traducidos por el compilador.

mario2000
17-10-2008, 18:36:51
cHackAll, muchas gracias por tu aclaracion eso era lo que queria saber si se podia o no, en dado caso toca aferrarse a la metrica que menciona JoseFco muchas gracias a todos y un saludo a poliburro :D, que de burro no tiene nada :p

JoseFco
17-10-2008, 18:58:30
cHackAll, muchas gracias por tu aclaracion eso era lo que queria saber si se podia o no, en dado caso toca aferrarse a la metrica que menciona JoseFco muchas gracias a todos y un saludo a poliburro :D, que de burro no tiene nada :p

jajajajaaja ya se enteraron en Colombia que el burro es Pichi Corta!!:D:D:D


Un Saludo.


PD:De seguro eduarcol tiene algo que ver en eso.:D

poliburro
20-10-2008, 15:31:58
cHackAll, muchas gracias por tu aclaracion eso era lo que queria saber si se podia o no, en dado caso toca aferrarse a la metrica que menciona JoseFco muchas gracias a todos y un saludo a poliburro :D, que de burro no tiene nada :p

:eek: eso amigo tendrás que aclararlo jajajajja

mario2000
20-10-2008, 19:47:06
Jua jua jua, Hola poliburro al que tienes que preguntarle es a JoseFco, yo no hable en sentido figurado, esa es cosa de ustedes que seguro ya se conosen de atras :D