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_not 是 invert 的别名:
>>> 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])