sql >> Base de Datos >  >> RDS >> Oracle

Operadores de desplazamiento en PL/SQL

La siguiente respuesta no es agnóstica de endianness y mi redacción se basa en formato little endian...

Puede desplazar bits simplemente multiplicando (desplazamiento a la izquierda) o dividiendo (desplazamiento a la derecha) el argumento por 2 a la potencia de x, donde x es el número de bits a desplazar. por ejemplo, si necesito desplazar el byte de orden inferior de un número (255:11111111) 16 bits a la izquierda, realizaría la siguiente operación:

select 255 * power(2,16) from dual;  
-- the result will be (16711680:111111110000000000000000)

por el contrario, si quiero desplazar el valor 16711680 16 bits a la derecha, haría lo siguiente:

select 16711680 / power(2,16) from dual;
-- the result will be (255:11111111)