Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-12-2014
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
Operaciones de Bits en Delphi

Hola amigos.
Alguien me podría decir que significa esto?
Código Delphi [-]
var
  B4: Integer;
begin
  B4 := ((gNumber shr 8) and $FF) + 22;
...
Gracias

Última edición por nlsgarcia fecha: 30-12-2014 a las 18:40:21. Razón: Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 30-12-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 30-12-2014
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
En el apuro se me paso, lo lamento.
Responder Con Cita
  #4  
Antiguo 30-12-2014
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Revisa esto: Delphi Bascis: Shr command
Responder Con Cita
  #5  
Antiguo 30-12-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
jars,

Cita:
Empezado por jars
...¿Que significa esto?...
Código Delphi [-]
B4 := ((gNumber shr 8) and $FF) + 22;


Te comento : gNumber es desplazado 8 bits a la derecha con SHR, luego al resultado obtenido se le aplica una operación AND con 255 y al final se le suma 22, esto es algo muy específico y el significado práctico depende del algoritmo que implemente este resultado.

Revisa esta información:
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-12-2014 a las 19:41:27.
Responder Con Cita
  #6  
Antiguo 30-12-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
B4 := ((gNumber shr 8) and $FF) + 22;

Bueno, si mal no recuerdo, eso significa que al número gnumber, en binario, lo 'rota' hacia la derecha (shr) 8 posiciones (desplaza los bits).
Luego hace un 'and' con 255 en binario (FF en hexa) (1 and 1=1, 0 and 0=0, etc.)
Al resultado, finalmente, se le suma 22
Responder Con Cita
  #7  
Antiguo 30-12-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se me adelantó nlsgarcia
Responder Con Cita
  #8  
Antiguo 30-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jars.

Sumando algo a lo que bíen han explicado los compañeros, primero definimos estos datos:
Código:
shr (desplaza bits a la derecha)
and (realiza un producto lógico)
$FF(Hexa) = 255d= 11111111b
Ahora supongamos que gNumber = 119, entonces:
Código:
 (gNumber shr 8); 01110111 shr 8  = 0
((     0       ); and 11111111 = 0
( 0 ) + 22
B4 = 22
Entonces para el intervalo cerrado [0,255] B4 tomará el valor 22, de otro modo será: B4 = 22 + gNumber div 256.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 30-12-2014
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
Gracias a todos por responder.
Ecfisa, con el ejemplo me aclaraste todo.

Saludos
Responder Con Cita
  #10  
Antiguo 02-01-2015
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Aunque es tarde ya...
Por poner algo distinto
Un solo desplazamiento a la derecha es similar a dividir por 2
Un solo desplazamiento a la izda es similar a multiplicar por 2.

(a div 4) es similar a (a shr 2)-> instrucción mas rápida creo.

Feliz Año 2015 después de la resaca.
Responder Con Cita
  #11  
Antiguo 02-01-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por alquimista Ver Mensaje
Aunque es tarde ya... Por poner algo distinto
Un solo desplazamiento a la derecha es similar a dividir por 2
Un solo desplazamiento a la izda es similar a multiplicar por 2.
(a div 4) es similar a (a shr 2)-> instrucción mas rápida creo.
Feliz Año 2015 después de la resaca.
Nunca es tarde, sobre todo si la expliicación es tan clara.
Un ejemplo con tu explicación:
Cita:
00001000 = 8
shr 2 = 2 desplazamientos de bits a la derecha = dividir entre 2 y dividir entre 2
00000100 = 4 (primer desplazamiento=dividir entre 2)
00000010 = 2 (segundo desplazamiento=dividir entre 2)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Instalar componentes de 32 bits en una PC de win7 a 64 bits uper Windows 10 29-01-2016 18:08:30
compilar programas 32 bits con lazarus 64 bits anubis Lazarus, FreePascal, Kylix, etc. 3 30-10-2013 18:08:44
Como ejecutar aplicativos dbExpress de 32 bits en 64 bits rolandoj Conexión con bases de datos 0 30-07-2010 19:39:07
operaciones con bits pulpin C++ Builder 2 25-04-2008 21:14:57
Operaciones en delphi salvica OOP 7 20-04-2006 10:58:11


La franja horaria es GMT +2. Ahora son las 05:11:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi