NumPy 教程 之 NumPy 位运算 5

简介: NumPy 位运算在二进制位级别操作数据,用于底层数据处理与优化。NumPy 提供如 `bitwise_and`、`bitwise_or`、`bitwise_xor`、`bitwise_not` 或 `invert`、`left_shift`、`right_shift` 等函数。`invert` 对整数按位取反,对于无符号整数直接翻转每位,对于有符号整数取补码后加一。

NumPy 教程 之 NumPy 位运算 5

NumPy 位运算

位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。

位运算在计算机科学中广泛应用于优化和处理底层数据。

NumPy "bitwise_" 开头的函数是位运算函数。

NumPy 位运算包括以下几个函数:

函数 描述

bitwise_and 按位与,对数组元素执行位与操作
bitwise_or 按位或,对数组元素执行位或操作
bitwise_xor 按位异或
bitwise_not 按位取反
invert 按位取反
left_shift 左移位运算,向左移动二进制表示的位
right_shift 右移位运算,向右移动二进制表示的位

invert
invert() 函数对数组中整数进行位取反运算,即 0 变成 1,1 变成 0。

对于有符号整数,取该二进制数的补码,然后 +1。二进制数,最高位为0表示正数,最高位为 1 表示负数。

看看 ~1 的计算步骤:

将1(这里叫:原码)转二进制 = 00000001
按位取反 = 11111110
发现符号位(即最高位)为1(表示负数),将除符号位之外的其他数字取反 = 10000001
末位加1取其补码 = 10000010
转换回十进制 = -2

表达式

二进制值(2 的补数)

十进制值
5 00000000 00000000 00000000 00000101 5
~5 11111111 11111111 11111111 11111010 -6

实例

import numpy as np

print ('13 的位反转,其中 ndarray 的 dtype 是 uint8:')
print (np.invert(np.array([13], dtype = np.uint8)))
print ('\n')

比较 13 和 242 的二进制表示,我们发现了位的反转

print ('13 的二进制表示:')
print (np.binary_repr(13, width = 8))
print ('\n')

print ('242 的二进制表示:')
print (np.binary_repr(242, width = 8))

输出结果为:

13 的位反转,其中 ndarray 的 dtype 是 uint8:
[242]

13 的二进制表示:
00001101

242 的二进制表示:
11110010

目录
相关文章
|
缓存 监控 Linux
Linux配置成代理服务器
代理服务器(Proxy Server)是一种位于计算机网络中的中间服务器,它充当了客户端和目标服务器之间的中介,用于转发客户端请求并获取目标服务器的响应。代理服务器的主要功能包括以下几点:
7625 1
|
Java Maven
用graalvm将maven项目打包成可执行文件
本文介绍了如何使用GraalVM将Maven项目打包成可执行文件,包括引入依赖和插件、编写代码、执行打包命令以及运行查看结果的完整过程。
814 0
用graalvm将maven项目打包成可执行文件
|
开发工具 git C++
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
2145 0
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
938 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话