Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Shift-Operatoren in PL/SQL

Die folgende Antwort ist nicht Endian-agnostisch und meine Formulierung basiert auf dem Little-Endian-Format ...

Sie können Bits verschieben, indem Sie einfach das Argument mit 2 hoch x multiplizieren (nach links verschieben) oder dividieren (nach rechts verschieben), wobei x die Anzahl der zu verschiebenden Bits ist. Wenn ich beispielsweise das niederwertige Byte einer Zahl (255:11111111) um 16 Bit nach links verschieben muss, würde ich die folgende Operation ausführen:

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

Umgekehrt, wenn ich den Wert 16711680 um 16 Bit nach rechts verschieben möchte, würde ich Folgendes ausführen:

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