bitwise_right_shift

paddle. bitwise_right_shift ( x, y, is_arithmetic=True, out=None, name=None ) [源代码]

对 Tensor xy 逐元素进行 按位算术(或逻辑)右移 运算。

\[Out = X \gg Y\]

注解

paddle.bitwise_right_shift 遵守 broadcasting,如您想了解更多,请参见 Tensor 介绍 .

参数

  • x (Tensor)- 输入的 N-D Tensor,数据类型为:uint8,int8,int16,int32,int64。

  • y (Tensor)- 输入的 N-D Tensor,数据类型为:uint8,int8,int16,int32,int64。

  • is_arithmetic (bool) - 用于表明是否执行算术位移,True 表示算术位移,False 表示逻辑位移。默认值为 True,表示算术位移。

  • out (Tensor,可选)- 输出的结果 Tensor,是与输入数据类型相同的 N-D Tensor。默认值为 None,此时将创建新的 Tensor 来保存输出结果。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

按位算术(逻辑)右移 运算后的结果 Tensor,数据类型与 x 相同。

代码示例 1

算术右移

 >>> import paddle
 >>> x = paddle.to_tensor([[10,20,40,80],[16,17,32,65]])
 >>> y = paddle.to_tensor([[1,2,3,4,], [2,3,2,1]])
 >>> paddle.bitwise_right_shift(x, y, is_arithmetic=True)
 Tensor(shape=[2, 4], dtype=int64, place=Place(gpu:0), stop_gradient=True,
        [[5 , 5 , 5 , 5 ],
         [4 , 2 , 8 , 32]])

代码示例 2

逻辑右移

 >>> import paddle
 >>> x = paddle.to_tensor([[-10,-20,-40,-80],[-16,-17,-32,-65]], dtype=paddle.int8)
 >>> y = paddle.to_tensor([[1,2,3,4,], [2,3,2,1]], dtype=paddle.int8)
 >>> paddle.bitwise_right_shift(x, y, is_arithmetic=False)  # logic shift
 Tensor(shape=[2, 4], dtype=int8, place=Place(gpu:0), stop_gradient=True,
     [[123, 59 , 27 , 11 ],
         [60 , 29 , 56 , 95 ]])