maxframe.tensor.invert#

maxframe.tensor.invert(x, out=None, where=None, **kwargs)[源代码]#

逐元素计算按位取反,或按位 NOT。

计算输入张量中整数的二进制表示的按位 NOT。此 ufunc 实现了 C/Python 运算符 ~

对于有符号整数输入,返回其二进制补码。在二进制补码系统中,负数由其绝对值的二进制补码表示。这是计算机中表示有符号整数的最常用方法 [1]。一个 N 位的二进制补码系统可以表示范围为 \(-2^{N-1}\)\(+2^{N-1}-1\) 的所有整数。

参数:
  • x (array_like) -- 仅处理整数和布尔类型。

  • out (Tensor, None, or tuple of Tensor and None, optional) -- 用于存储结果的位置。如果提供,其形状必须可以广播到输入形状。如果未提供或为 None,则返回一个新分配的张量。元组(只能作为关键字参数)的长度必须等于输出的数量。

  • where (array_like, optional) -- 值为 True 表示在该位置计算 ufunc,值为 False 表示保留输出中的原值。

  • **kwargs

返回:

out -- 结果。

返回类型:

array_like

备注

bitwise_notinvert 的别名:

>>> import maxframe.tensor as mt
>>> mt.bitwise_not is mt.invert
True

引用

示例

我们已经看到 13 的二进制表示为 00001101。那么 13 的按位取反或按位 NOT 是:

>>> mt.invert(mt.array([13], dtype=mt.uint8)).execute()
array([242], dtype=uint8)

结果取决于位宽:

>>> mt.invert(mt.array([13], dtype=mt.uint16)).execute()
array([65522], dtype=uint16)

当使用有符号整数类型时,结果是无符号类型结果的二进制补码:

>>> mt.invert(mt.array([13], dtype=mt.int8)).execute()
array([-14], dtype=int8)

布尔值也被接受:

>>> mt.invert(mt.array([True, False])).execute()
array([False,  True])