Foros del Web » Programación para mayores de 30 ;) » Java »

Pequeña duda sobre código

Estas en el tema de Pequeña duda sobre código en el foro de Java en Foros del Web. Hola, estoy usando código que encontré por internet, y me estoy encontrando muchas veces con cosas como esta: int a = 12; int b = ...
  #1 (permalink)  
Antiguo 26/12/2012, 17:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Pequeña duda sobre código

Hola, estoy usando código que encontré por internet, y me estoy encontrando muchas veces con cosas como esta:

int a = 12;

int b = (a & 15) << 4;

int c = a & 240;

He intentado sacarlo yo solo, pero cuando creo que ya sé para que se ponen esos & ahí en medio... me sale por otro lao haciendo otra cosa... Puede alguien explicarmelo así masticadito POR FAVOR.

Y el << 4, se supone que es para correr los bits 4 veces a la izquierda o algo así?... Llevo muchos años programando pero nunca he usado esas cosas, así que me descolocan.

Gracias de antemano...:D.

Saludos.
  #2 (permalink)  
Antiguo 26/12/2012, 19:25
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 11 años, 4 meses
Puntos: 16
Respuesta: Pequeña duda sobre código

El & es el and lógico. Digamos que es una multiplicación bit a bit, cuya tabla de verdad es
& 0 1
0 0 0
1 0 1

Si ,por ejemplo, quieres hacer & de 3 y 5, 3 en binario es 11 y 5 es 101.
011&101=001

<< sirve para desplazar hacia la izquierda el número de veces que pongas a la derecha. Es decir, <<4, desplazará 4 bits, <<1, desplazará 1 bit...
Depende del tipo de dato, causará un efecto u otro. Por ejemplo hacer <<1 en un dato tipo int, es multiplicar por 2.


Un saludo.
  #3 (permalink)  
Antiguo 26/12/2012, 21:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Pequeña duda sobre código

Muchas gracias por la explicación.

Eso es más o menos lo que yo he deducido buscando por google. Entonces mi duda es... ¿Por qué usar eso?, o ¿cuándo usarlo?... quiero decir, no me parece muy lógico o intuitivo hacer operaciones con bits pudiendo usar el sistema decimal, así que supongo que habrá casos en los que sea mejor usarlo...¿no?.

Como tú has dicho, si << 1 sobre un int es lo mismo que poner *2... para qué complicarse...¿no?... Y en el ejemplo que puse... ¿Con qué fin el que escribió eso multiplica bit a bit 12 y 15 y desplaza 4 veces los bits a la izquierda?

¿Se entiende mi incertidumbre?... Es que no veo por donde meterle mano al resto del código hasta que no sepa por qué pone eso..:(

¿Hay alguna tabla standard de usos de << para según que casos o algo así?

Perdón por las 200 preguntas.... es que soy un mar de dudas..^^.

Saudos!
  #4 (permalink)  
Antiguo 29/12/2012, 17:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 66
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Pequeña duda sobre código

Generalmente lo corrimientos se utilizan cuando se programa a bajo nivel como en ensamblador, hay tarjetas como arduino en la que se puede programar en varios lenguajes como java, muchas veces los programas en java se corren sobre un ordenador y no hay necesidad de usarlos, pero cuando se quiere utilizar para hacer algo mas tangible como programar una puerta para que se abra al detectar la proximidad de una persona (Por decir un ejemplo de algo tangible) podria darse el caso de utilizar corrimientos

Etiquetas: pequeña, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:17.