• Viernes 29 de Marzo de 2024, 13:15

Autor Tema:  ,, Una Cuestion,,,en Rotacion De Bits  (Leído 4492 veces)

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
,, Una Cuestion,,,en Rotacion De Bits
« en: Jueves 31 de Agosto de 2006, 20:34 »
0
que tal chicos,, hay alguna forma o alguna palabra reservada o funcion , que nos pueda servir para la rotacion de un numero porsupuesto binario. obviamente para el desplazamiento si la hay pero para la rotacion circular no encuentra alguna.



Saludos.

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #1 en: Jueves 31 de Agosto de 2006, 20:55 »
0
no se me ocurre para que usar algo asi, por lo que puede ser que este diciendo cualquier cosa, pero podrias programar una funcion que use la matriz de rotacion para algo asi:

matriz(theta) =
| cos(theta)   -sen(theta) |
| sen(theta)    cos(theta)  |


esto funcionara para vectores, pero supongo que podrias hacer que funcione para tu caso tambien, tomando pares de bits quizas...

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #2 en: Jueves 31 de Agosto de 2006, 21:27 »
0
mmmamm soy principiante :S

10000101 .. este numero rotado a la izquier 2 posiciones quedaria
10000110.... de esta manera


amm no se si lo que me recomiendas se pueda implementar asi.


gracias chimps

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #3 en: Jueves 31 de Agosto de 2006, 21:52 »
0
ahhhhhhh ahora entiendo lo que quisite decir con rotacion, olvidate de lo que te dije jajaa....

si entendi bien, queres hacer tipo:
1010010
luego de desplazar 2 bits hacia la derecha, quedaria:
1010100
o sea que da la vuelta una vez que llega a alguno de los extremos no?...

en C++ no hay operadores para eso pero si hay funciones en internet que hacen eso...tenes que buscar "bit rotation" o "circular shift" en google y vas a encontrarlos...

Max_D

  • Miembro MUY activo
  • ***
  • Mensajes: 117
    • Ver Perfil
    • http://sitioteca.spaces.live.com/
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #4 en: Jueves 31 de Agosto de 2006, 22:19 »
0
Quizas podrias realizarlo en ensamblador, con la instruccion asm{...}. En ensamblador hay una instruccion para rotar bits a la izquierda y otra para rotarlos a la derecha.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #5 en: Jueves 31 de Agosto de 2006, 23:31 »
0
encontre esto

http://david.tribble.com/text/c0xrot.htm
pero no logro entenderlo completamente.



ah en ensamblador,,, recuerda que soy principiante amigo Max_D :S

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #6 en: Jueves 31 de Agosto de 2006, 23:47 »
0
esta pagina es nada mas una propuesta del '98 para que se implemente esa funcionalidad al lenguaje C

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #7 en: Jueves 31 de Agosto de 2006, 23:55 »
0
estuve buscando y parece que lo mejor seria meter el codigo en assemnbler porque ya tiene formar de hacer esto (http://usuarios.advance.com.ar/trimegis/CT09.TXT)...yo honestamente no se muy bien como mezclar C con assembler, quizas Max_D te podria ayudar con este tema

Max_D

  • Miembro MUY activo
  • ***
  • Mensajes: 117
    • Ver Perfil
    • http://sitioteca.spaces.live.com/
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #8 en: Viernes 1 de Septiembre de 2006, 00:09 »
0
En ensamblador existen las instrucciones RCL (rotacion a la izquierda con acarreo), RCR (rotacion a la derecha con acarreo), ROL (rotacion a la izquierda) y ROR (rotacion a la derecha). El acarreo simplemente es que el bit que se sale, ya sea por la izquierda o por la derecha, se pone en el otro lado, como si fuera circular.

Quedaria algo como asi:

Código: Text
  1. asm{
  2. mov ax, dato
  3. lol ax, n
  4. mov dato, ax
  5. }
  6.  

donde dato es lo que quieres rotar y n es el numero de veces que vas a desplazarlo. Espero haberte aclarado algo, tambien puedes mirar mas aquí

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #9 en: Viernes 1 de Septiembre de 2006, 01:02 »
0
Parece que si, tambien ya estuve leyendo algo al respecto con assambler, pues gracias chimps por tu ayuda.

y bueno Max_D, mi duda ahora es, para c y c++ utilizo borland turbo version 3.1 y 3.0 en D.O.S, pero para programar en assambler que necesito.

(ya me anime hacerlo en assambler)

Max_D

  • Miembro MUY activo
  • ***
  • Mensajes: 117
    • Ver Perfil
    • http://sitioteca.spaces.live.com/
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #10 en: Viernes 1 de Septiembre de 2006, 02:14 »
0
El ensamblador para el 8086 que yo he usado es este y aqui el juego de instrucciones. Espero que tengas suerte  ;)

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #11 en: Viernes 1 de Septiembre de 2006, 02:56 »
0
Gracias por todo

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: ,, Una Cuestion,,,en Rotacion De Bits
« Respuesta #12 en: Viernes 1 de Septiembre de 2006, 08:29 »
0
:P  :P  :P  :P  :P


Definitivo lo mas facil es usar asm y como te han dicho rol y ror son las intrucciones adecuadas y faciles de implementar en c++...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]