oracle – PL / SQL中的Shift运算符

PL / SQL中是否有替代的移位运算符?有bitand函数,但它只接受binary_integer类型的参数.

如果我需要检查真正长数字的较低/较高位(可能设置在行中),我该怎么办?

在C中有<<和>>操作符.我如何在PL / SQL中实现它们?

以下答案不是字节序不可知的,我的措辞是基于小端格式…

您可以简单地将位移位(向左移位)或将参数除(右移)2乘以x的幂,其中x是要移位的位数.例如,如果我需要将数字的低位字节(255:22222111)向左移16位,我将执行以下操作:

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

相反,如果我想将值16711680 16位向右移动,我将执行以下操作:

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

相关文章

发表回复

您的电子邮箱地址不会被公开。