Noticias idealista.com:
  Burbuja.info - Foro de economía > Foros > Guardería > Pido ayuda a los dioses del C+.
Respuesta
 
Herramientas Desplegado
  #1 (permalink)  
Antiguo 20-may-2009, 15:09
Avatar de Loco_Ivan
Excelentísimo, ilustrísimo y grandísimo miembro de élite de los gurús burbujistas
 
Fecha de Ingreso: 09-abril-2008
Ubicación: València
Mensajes: 8.381
Gracias: 4.547
5.815 Agradecimientos de 2.367 mensajes
Ignorar usuario para siempre
Os explico. Me estoy estudiando por mi cuenta el lenguaje C para el examen de una asignatura, pero hay una cosilla que no termino de comprender como funciona exactamente. A ver si me podéis ayudar.

Se trata del operador de bits << y >>, es que realiza desplazamientos binarios. Entiendo el concepto, pero cuando lo veo aplicado en un programa me pierdo.

Uno de los ejercicios que tengo, de los cuales tengo el resultado pero no el proceso, es éste:

a=2<<2*3>>1; El resultado es 64.

a=(2<<2)*(3>>1); el resultado es 8.

La segunda línea la interpreto como que 2 en binario es 0010, y al desplazarse dos lugares se queda en 1000, es decir 8. Lo mismo con 3, que es 0011 y al desplazarse a la derecha un lugar queda 0001, es decir 1. Al multiplicar da 8*1=8.

La primera línea es la que no entiendo. Si el operador * tiene mayor precedencia que el operador de bits, se supone que primero multiplico 2*3= 6, y luego? ¿desplazo 2 lugares a la izquierda y luego a la derecha? Entonces el resultado sería 1100 que es 14, no 64.

A ver si me podéis ayudar o al menos dirigirme a páginas donde expliquen como se realiza el proceso de forma clara, porque todos lo explican con un ejemplo muy fácil, pero luego no sé como funciona de verdad.

Gracias de antemano.
Responder Citando
  #2 (permalink)  
Antiguo 20-may-2009, 15:19
Avatar de joseph_mary
Supermiembro
 
Fecha de Ingreso: 27-septiembre-2006
Ubicación: Punxstawnwey
Mensajes: 1.486
Gracias: 3.526
296 Agradecimientos de 183 mensajes
Ignorar usuario para siempre
¿Puede ser una errata del libro?
__________________



Perdonen que les llame caballeros, pero es que no les conozco demasiado (G. Marx)

Miembro nº1 de la plataforma En contra de los multinicks en el foro.
Responder Citando
Estos usuarios dan las gracias a joseph_mary por su mensaje:
  #3 (permalink)  
Antiguo 20-may-2009, 15:23
Avatar de Bubble Boy
Grandísimo miembro de la élite burbujista
 
Fecha de Ingreso: 22-abril-2007
Ubicación: Madrid
Mensajes: 4.206
Gracias: 1.643
3.026 Agradecimientos de 1.100 mensajes
Ignorar usuario para siempre
Canal + es ahora Cuatro.
__________________

"Yo he visto cosas que vosotros no creeríais. Atacar naves en llamas más allá de Orión. He visto Rayos-C brillar en la oscuridad cerca de la Puerta de Tannhäuser. He visto pedir 50 millones por un piso a rehabilitar de 70 m2 en un quinto sin ascensor, en un edificio de 100 años del centro de Madrid. Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia. Es hora de morir."
Responder Citando
Estos 2 usuarios dan las gracias a Bubble Boy por su mensaje:
  #4 (permalink)  
Antiguo 20-may-2009, 15:24
Avatar de Cygnus Saint
Agarrao a las kalandrakas
 
Fecha de Ingreso: 23-agosto-2007
Mensajes: 1.612
Gracias: 2.789
1.273 Agradecimientos de 603 mensajes
Ignorar usuario para siempre
Ojo, la prioridad es una cosa y la precencia otra. Para este ejemplo, efectivamente la multiplicación tiene mayor prioridad que el desplazamiento de bits. Por tanto en un primer paso la operación queda

a=2<<6>>1

Como la precedencia de estos operadores es de izquierda a derecha, se resuelven las operaciones de izq. a der. 2<<6 es 128. A continuación se resolvería 128>>1, lo que da 64.

De todas formas, a menos que trabajes a bajo nivel me extraña que uses estas operaciones... mejor divide y multiplica, que queda más claro en el código.

Saludos.
__________________

Iniciado por carlitros_15 Ver Mensaje
Estamos forrados y tenemos muchos pisos. Pero sabeis que? El que yo me enriquezca o me arruine no es moral ni inmoral.

Iniciado por Rubens Ver Mensaje
La mayoría de la población tiene la cabeza metida en el culo. No es nuestro problema. Miremos a la realidad de frente, y si podemos, saquémosle ventaja.

Responder Citando
Estos usuarios dan las gracias a Cygnus Saint por su mensaje:
  #5 (permalink)  
Antiguo 20-may-2009, 15:24
Avatar de midway
ir-
 
Fecha de Ingreso: 01-abril-2008
Mensajes: 16.161
Gracias: 298
12.790 Agradecimientos de 5.720 mensajes
Ignorar usuario para siempre
recuerde load""enter play,y si todo falla,usa un martillo
__________________

Responder Citando
Estos usuarios dan las gracias a midway por su mensaje:
  #6 (permalink)  
Antiguo 20-may-2009, 15:28
Avatar de seacock
Excelentísimo, ilustrísimo y grandísimo miembro de élite de los gurús burbujistas
 
Fecha de Ingreso: 22-mayo-2005
Ubicación: Republik Österreich
Mensajes: 9.812
Gracias: 3.663
14.156 Agradecimientos de 3.485 mensajes
Ignorar usuario para siempre
Ya te han comentado la solución

De todas formas, sigue la regla de que si subes multiplicas x2, si bajas divides x2, no "cuentes los palotes" o te volverás tarumba. Una de las razones por las que servidor dejó de programar, siendo bastante bueno, modestia aparte

Consejo: cuando acabes eso que estás haciendo, tira el libro, quema tus apuntes y olvida todo lo aprendido. Saldrás ganando.
__________________

Deeply, Govinda bowed; tears he knew nothing of, ran down his old face; like a fire burnt the feeling of the most intimate love, the humblest veneration in his heart.

Deeply, he bowed, touching the ground, before
him who was sitting motionlessly, whose smile reminded him of everything he had ever loved in his life, what had ever been valuable and holy to him in his life.


El anciano propende a enjuiciar el hoy con el criterio del ayer. Ramón y Cajal
Responder Citando
Estos usuarios dan las gracias a seacock por su mensaje:
  #7 (permalink)  
Antiguo 20-may-2009, 15:29
Avatar de Loco_Ivan
Excelentísimo, ilustrísimo y grandísimo miembro de élite de los gurús burbujistas
 
Fecha de Ingreso: 09-abril-2008
Ubicación: València
Mensajes: 8.381
Gracias: 4.547
5.815 Agradecimientos de 2.367 mensajes
Ignorar usuario para siempre
Iniciado por joseph_mary Ver Mensaje
¿Puede ser una errata del libro?

No, porque hay otros parecidos y tampoco me aclaro.

Veo que ya me lo han explicado correctamente más abajo.

Iniciado por Cygnus Saint Ver Mensaje
Ojo, la prioridad es una cosa y la precencia otra. Para este ejemplo, efectivamente la multiplicación tiene mayor prioridad que el desplazamiento de bits. Por tanto en un primer paso la operación queda

a=2<<6>>1

Como la precedencia de estos operadores es de izquierda a derecha, se resuelven las operaciones de izq. a der. 2<<6 es 128. A continuación se resolvería 128>>1, lo que da 64.

De todas formas, a menos que trabajes a bajo nivel me extraña que uses estas operaciones... mejor divide y multiplica, que queda más claro en el código.

Saludos.

Iniciado por pacoyoyo Ver Mensaje
yo pienso es q tu razonamiento es correcto:

a = 2<<6>>1

y aplicas lo de la derecha pq como dices ahora tienes (este operador es la derecha )

como si fuera a = (2<<6)>>1

a = 128>>1 = 64

Pero ya sabes q los parentesis son gratis

Gracias a los dos. La verdad es que ya me estaba volviendo loco. No es que trabaje a bajo nivel (ni lo pretendo) es una asignatura que tengo dentro de la carrera, y por estar trabajando no he podido ir a clase, con lo que me ha tocado estudiar a pelo y estos son ejercicios de examenes.

Gracias de nuevo.
Responder Citando
  #8 (permalink)  
Antiguo 20-may-2009, 15:30
Avatar de Loco_Ivan
Excelentísimo, ilustrísimo y grandísimo miembro de élite de los gurús burbujistas
 
Fecha de Ingreso: 09-abril-2008
Ubicación: València
Mensajes: 8.381
Gracias: 4.547
5.815 Agradecimientos de 2.367 mensajes
Ignorar usuario para siempre
Iniciado por seacock Ver Mensaje
Consejo: cuando acabes eso que estás haciendo, tira el libro, quema tus apuntes y olvida todo lo aprendido. Saldrás ganando.

jjajajaja, precisamente lo que pensaba hacer.Gracias.
Responder Citando
  #9 (permalink)  
Antiguo 20-may-2009, 15:57
Avatar de markinen
Baneado.
 
Fecha de Ingreso: 26-noviembre-2008
Ubicación: Madriz, capital del Imperio Inmobiliario
Mensajes: 736
Gracias: 117
275 Agradecimientos de 138 mensajes
Ignorar usuario para siempre
Si te parece complicado, cómprate un taladro y te pones a hacer de estas:



No sabía que seguían metiendo caña con el C+, lo normal es que aprendiérais java o .net, no?
Responder Citando
  #10 (permalink)  
Antiguo 20-may-2009, 16:05
Avatar de los lunes al solbes
Concuñado de Trichet
 
Fecha de Ingreso: 18-octubre-2008
Mensajes: 1.224
Gracias: 114
1.047 Agradecimientos de 390 mensajes
Ignorar usuario para siempre
Paso de pensarlo.
Si la esperanza de vida se multiplica por 1000 y va a vivir 100.000 años jubilandote a los 99.965 años eso lo vas a usar entre 0 y ninguna vez.
Los que dan clases y escriben libros tienen que ganarse la vida tambien y por eso lo tienes que aprender.
Responder Citando
Respuesta

Etiquetas
人々が簡単に情報, color auto goto list run, el fortran a pelo si tenia merito, el que responda jamás ha follado, este programa petag, esto con el basic no pasaba, for i = 0 to tomar por culo, hello world y sacas nota, hilo para vírgenes, java es de maricas, nuncafollistas d tertulia, pakirrín rules java, pollas aún con la etiqueta puesta, printf("taggers comedmela");, reunion de frikis, sobrestock de pollas a estrenar, tag++

Herramientas
Desplegado

  Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Activado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pido ayuda ideologica lalo889 Guardería 18 11-nov-2008 10:16
Pido ayuda a los compradores de ebay Caperucita Guardería 23 29-ago-2008 17:08
Delicada situación con esta chica, ayuda pido Sota_de_espadas Guardería 105 16-jul-2008 21:31
El listo del nazionalisto. Pido un poquito de ayuda. glub Guardería 59 16-dic-2007 15:07
Colegas Informaticos : Os Pido Ayuda lennon Guardería 3 10-sep-2007 20:15


La franja horaria es GMT +2. Ahora son las 21:15.

Gravatar as Default Avatar by 1e2.it

Content Relevant URLs by vBSEO 3.6.0