Poniższa odpowiedź nie jest agnostyczna dla endianness, a moje sformułowanie jest oparte na formacie little endian...
Możesz przesuwać bity po prostu mnożąc (przesuń w lewo) lub dzieląc (przesuń w prawo) argument przez 2 do potęgi x, gdzie x jest liczbą bitów do przesunięcia. na przykład, jeśli muszę przesunąć mniej znaczący bajt liczby (255:1111111) o 16 bitów w lewo, wykonałbym następującą operację:
select 255 * power(2,16) from dual;
-- the result will be (16711680:111111110000000000000000)
odwrotnie, jeśli chcę przesunąć wartość 16711680 o 16 bitów w prawo, wykonałbym następujące czynności:
select 16711680 / power(2,16) from dual;
-- the result will be (255:11111111)