|
Página 1 de 1
|
Autor |
Mensaje |
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Dudas Con << Y >>, ~
Otra vez me ha surgido la duda de como traducir este código de javascript a gambas
Citar: var key = ((proxyId2 << 16) & 0xffff0000) | proxyId1;
key = ~key + ((key << 15) & 0xFFFF8000);
A ver si me podeis echar una mano
Saludo
|
#1 Martes, 26 Abril 2016, 13:01 |
|
|
vicr
Técnico Programador
Registrado: Septiembre 2013
Mensajes: 158
Edad: 47
|
Re: Dudas Con << Y >>, ~
¡Coincidencia! ...
me estaban preguntando hace poco por la constante epsilon... que no manejo pero es tu ~ javascript... usado para determinar si una entidad vectorial es igual a otra.
Y los <<y>> mueven bits... creo que tengo ejemplos de eso. Los buscaré.
|
#2 Martes, 26 Abril 2016, 14:03 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Dudas Con << Y >>, ~
vicr:
He encontrado esto:
http://javascript.espaciolatino.com/lengjs/jsgram/op_bin.htm
Citar: El ordenador, internamente, trata cualquier tipo de datos como una cadena binaria ( ceros y unos). Así los números se representan en sistema binario de numeración mientras que los caracteres se convierten a código ASCII, que son números que se almacenan por tanto codificados en binario. JavaScript ofrece los operadores típicos para trabajar con estas cadenas a nivel de bit (cada uno de los ceros o unos de las cadenas binarias). Para trabajar con estos operadores es conveniente tener una idea previa sobre la codificación binaria.
Complementación ~
Complementa, o niega, una cadena binaria conviertiendo los 1 en 0 y los 0 en 1.
Por ejemplo el número 38 escrito en sistema binario es 00100110 si le aplicamos este operador se convierte en 11011001, o sea el -39 (JavaScript usa codificación en complemento a 2 para los números negativos).
Desplazamiento izquierda <<
Desplaza los bits a la izquierda los lugares que se le indique rellenando con ceros por la derecha y desechando los bits de mayor peso, esto equivale a multiplicar por potencias de 2. Por ejemplo si al 00011010 (26) lo desplazamos 2 a la izquierda tendremos el 01101000 (104).
var num = 26, res;
res = num <<2>>
Desplaza los bits a la derecha los lugares que se le indique rellenando con ceros por la izquierda y desechando los bits de menor peso, esto equivale a una división entera por potencias de 2. Por ejemplo si al 00011010 (26) lo desplazamos 2 a la derecha tendremos el 00000110 (6).
var num = 26, res;
res = num << 2; /* num contendrá
104 */
AND lógico binario &
Realiza un AND lógico bit a bit entre dos valores. El AND lógico da como resultado 1 sólo si ambos bits son 1. Por ejemplo
0 1 1 0 1 1 0 1 (109)
AND 0 0 1 0 0 1 1 0 (38)
resultado: 0 0 1 0 0 1 0 0 (36)
var op1 = 109, op2 = 38, res;
res = op1 & op2; /*res
contiene 36 */
OR lógico binario |
Realiza un OR lógico bit a bit entre dos valores. El OR lógico da como resultado 0 sólo si ambos bits son 0. Por ejemplo
0 0 1 1 1 0 1 0 (58)
OR 0 1 0 1 0 0 1 0 (82)
resultado: 0 1 1 1 1 0 1 0 (122)
En el ejemplo podemos ver la sintaxis del operador
var op1 = 58, op2 = 82, res;
res = op1 | op2; /*res
contiene 122 */
XOR lógico binario ^
Realiza un XOR lógico bit a bit entre dos valores. El XOR lógico da como resultado 1 si uno sólo de los bits es 1. Por ejemplo
0 0 1 1 1 0 1 0 (58)
OR 0 1 0 1 0 0 1 0 (82)
resultado: 0 0 1 0 1 0 0 0 (40)
En el ejemplo podemos ver la sintaxis del operador
var op1 = 109, op2 = 38, res;
res = op1 ^ op2; /*res
contiene 40*/
Ahora falta traducirlo al gambas3...
|
#3 Martes, 26 Abril 2016, 19:29 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Dudas Con << Y >>, ~
Mas información:
Operadores Binarios en gambas3:
http://gambaswiki.org/wiki/cat/bit?l=es
Funciones de Manipulación de Bits
BClr Pone un bit a cero en un número entero.
BSet Pone a uno un bit en un número entero.
BTst Comprueba el valor de un bit en un número entero.
BChg Invierte un bit en un número entero.
Lsl Desplaza a la izquierda un número entero.
Lsr Desplaza a la derecha un número entero.
Shl Desplaza a la izquierda un número entero y mantene el signo.
Shr Desplaza a la derecha un número entero y mantene el signo.
Rol Rota a la izquierda un número entero.
Ror Rota a la derecha un número entero.
|
#4 Martes, 26 Abril 2016, 19:37 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Dudas Con << Y >>, ~
jaja se asemeja a ensamblador
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#5 Martes, 26 Abril 2016, 20:07 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Dudas Con << Y >>, ~
Citar: Complementación ~
Complementa, o niega, una cadena binaria conviertiendo los 1 en 0 y los 0 en 1.
Por ejemplo el número 38 escrito en sistema binario es 00100110 si le aplicamos este operador se convierte en 11011001, o sea el -39 (JavaScript usa codificación en complemento a 2 para los números negativos).
He hecho esta pequeña función que para numeros entre 0 y 255 vale:
Me he basado en https://es.wikipedia.org/wiki/Complemento_a_dos
|
#6 Miercoles, 27 Abril 2016, 07:27 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Dudas Con << Y >>, ~
Julio:
Llevas una buena temporada convirtiendo funciones de javascript que trata el tema de operaciones con binario.
¿ Tanto lo necesitas o es algo que te obsesiona ?.
Te lo digo por que llevo tambien una temporada que quiero aplicar recursión y no es bueno para la salud mental.
Cuando se puede hacer de otras formas más sencillas.
Claro que todo es cuestión de costumbres y entenderlo bien. Cosa que no es siempre fácil cuando ves vídeos en "inglish"
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#7 Miercoles, 27 Abril 2016, 08:51 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|