SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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.
-
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...
-
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
-
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...
-
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.
-
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
-
esta pagina es nada mas una propuesta del '98 para que se implemente esa funcionalidad al lenguaje C
-
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
-
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:
asm{
mov ax, dato
lol ax, n
mov dato, ax
}
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)
-
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)
-
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 ;)
-
Gracias por todo
-
: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++...