SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: cybergatita en Jueves 31 de Agosto de 2006, 20:34

Título: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: cybergatita en Jueves 31 de Agosto de 2006, 20:34
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.
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: chimps en Jueves 31 de Agosto de 2006, 20:55
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...
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: cybergatita en Jueves 31 de Agosto de 2006, 21:27
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
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: chimps en Jueves 31 de Agosto de 2006, 21:52
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...
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: Max_D en Jueves 31 de Agosto de 2006, 22:19
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.
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: cybergatita en Jueves 31 de Agosto de 2006, 23:31
encontre esto

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



ah en ensamblador,,, recuerda que soy principiante amigo Max_D :S
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: chimps en Jueves 31 de Agosto de 2006, 23:47
esta pagina es nada mas una propuesta del '98 para que se implemente esa funcionalidad al lenguaje C
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: chimps en Jueves 31 de Agosto de 2006, 23:55
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 (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
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: Max_D en Viernes 1 de Septiembre de 2006, 00:09
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í (http://www.monografias.com/trabajos11/lenen/lenen.shtml)
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: cybergatita en Viernes 1 de Septiembre de 2006, 01:02
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)
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: Max_D en Viernes 1 de Septiembre de 2006, 02:14
El ensamblador para el 8086 que yo he usado es este (http://iuhu.litio.org/soft/tasm.zip) y aqui (http://iuhu.litio.org/apuntes/instruc8086.zip) el juego de instrucciones. Espero que tengas suerte  ;)
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: cybergatita en Viernes 1 de Septiembre de 2006, 02:56
Gracias por todo
Título: Re: ,, Una Cuestion,,,en Rotacion De Bits
Publicado por: Bicholey en Viernes 1 de Septiembre de 2006, 08:29
: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++...