首页 > 其他分享 >14. NumPy位运算

14. NumPy位运算

时间:2022-09-26 14:48:13浏览次数:73  
标签:14 二进制 print 按位 np 返回值 NumPy 运算

1. 前言

本节重点讲解 NumPy 的位运算,NumPy 中提供了以下按位运算函数:

numpy按位运算函数
序号函数位运算符描述说明
1 bitwise_and & 计算数组元素之间的按位与运算。
2 bitwise_or | 计算数组元素之间的按位或运算。
3 invert ~ 计算数组元素之间的按位取反运算。
4 left_shift << 将二进制数的位数向左移。
5 right_shift >> 将二进制数的位数向右移。

2. bitwise_and()

该函数对数组中整数的二进制数进行“按位与”运算。示例如下:

import numpy as np 
a = 10 
b = 12 
print("a的二进制数:",bin(a)) 
print("b的二进制数:",bin(b)) 
print("将a与b执行按位与操作:",np.bitwise_and(a,b))  

输出结果如下:

a的二进制: 0b1010
b的二进制: 0b1100
a与b执行按位与操作: 8

如果两个的二进制数相对应的位都为 1,那么执行位与运算后,该位的结果就为 1,否则就为 0。上述示例:a 与 b 位与运算的结果为 1000,因此它的十进制结果为 8。

位与运算的真值表,如下所示:

位与运算真值表
ABAND(A,B)
0 0 0
0 1 0
1 0 0
1 1 1

3. bitwise_or()

bitwise_or() 对数组中整数的二进制数执行“按位或”运算。示例如下:

import numpy as np
a,b = 13,17
print ('13 和 17 的二进制数:')
print (bin(a), bin(b))
print ('13 和 17 的位或:')
print (np.bitwise_or(13, 17))

输出结果:

13 和 17 的二进制数:
0b1101 0b10001
13 和 17 的位或:
29

对于按位或运算,只要相对应的二进制位上有一个为 1,那么它的运算结果就位 1,否则为 0,其真值表如下:

位或运算真值表
ABOR(A,B)
0 0 0
0 1 1
1 0 1
1 1 1

4. Invert()

该方法对数组中整数做按位取反运算,也就是 0 变成 1,1 变为 0。若是有符号的负整数,取其二进制数的补码,并执行 +1 操作。

对于有符号二进制数,其最高位为 0, 表示正数;最高位为 1, 表示负数。

下面通过一组示例,对取反运算进行说明:

import numpy as np 
#数据类型为无符号整型uint8
arr = np.array([20],dtype = np.uint8) 
print("二进制表示:",np.binary_repr(20,8)) 
print(np.invert(arr)) 
#进行取反操作
print("二进制表示: ", np.binary_repr(235,8))  

输出结果如下:

二进制表示:00010100
[235]
二进制表示:11101011

注意:上述示例中,np.binary_repr 函数用来设置二进制数的位数。若对补码概念不熟悉,可参考百度百科《补码》。

left_shift()

该方法把数组元素的二进制数向左移动到指定位置,而其返回值所对应的二进制数,则会从右侧追加相等数量的 0(移动了多少位便追加多少个0)。

示例如下:

import numpy as np
#移动三位后的输出值
print (np.left_shift(20,3)
#打印移动后20的二进制数
print (np.binary_repr(20, width = 8))
#函数返回值的二进制数
print (np.binary_repr(160, width = 8))

输出结果为:

移动三位后的返回值:
160
移动三位后20的二进制数:
00010100
函数返回值的二进制数:
10100000

5. right_shift()

right_shift() 将数组中元素的二进制数向右移动到指定位置,其返回值对应的二进制数会从左侧追加相等数量的 0。该函数使用与 left_shift() 恰好相反。

示例如下:

import numpy as np
#将40右移两位后返回值:
print (np.right_shift(40,2))
#移动后40的二进制数:
print (np.binary_repr(40, width = 8))
#移动后返回值的二进制数:
print (np.binary_repr(10, width = 8))

输出结果为:

将40右移两位后返回值:
10
移动后40的二进制数:
00101000
移动后返回值的二进制数:
00001010

 

标签:14,二进制,print,按位,np,返回值,NumPy,运算
From: https://www.cnblogs.com/jiajunling/p/16730886.html

相关文章

  • 运算符
    一、算数运算符符号描述实例+加print(1+1)输出结果为2-减print(1-1)输出结果为0*乘print(2*2)输出结果为4/除print(4/2)输出结果为2//整除......
  • 12. NumPy相关数组操作
    1.前言NumPy中包含了一些处理数组的常用方法,大致可分为以下几类:数组变维操作数组转置操作修改数组维度操作连接与分割数组操作下面分别对它们进行介绍。2.数组......
  • acwing148. 合并果子
    acwing148.合并果子原题链接:https://www.acwing.com/problem/content/150/思路贪心使用集合角度思考,需要去证明最优解在某个集合的子集之中,其他的子集就可以摒弃掉。......
  • 14 -- 排序算法之冒泡排序
    冒泡排序的基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的数逐渐从前移向后,就像水底下的气泡一样逐渐向上冒。......
  • 11. NumPy遍历数组
    1.前言NumPy提供了一个nditer迭代器对象,它可以配合for循环完成对数组元素的遍历。下面看一组示例,使用arange()函数创建一个3*4数组,并使用nditer生成迭代器对......
  • 10. NumPy广播机制
    1.前言NumPy中的广播机制(Broadcast)旨在解决不同形状数组之间的算术运算问题。我们知道,如果进行运算的两个数组形状完全相同,它们直接可以做相应的运算。示例如下:import......
  • 9. NumPy高级索引
    1.前言NumPy与Python的内置序列相比,它提供了更多的索引方式。除了在《Numpy切片和索引》一节用到索引方式外,在NumPy中还可以使用高级索引方式,比如整数数组索引、布......
  • 14、shiro 链接版
    狂神说springboot链接:https://blog.csdn.net/qq_41978509/article/details/116104434?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221664113016167823918811......
  • Java基础语法 三元运算符
    格式优先级packageBasicGrammar.day03;/*运算符之五:位运算符(了解)结论:1.位运算符操作的都是整型的数据2.<<:在一定范围内,每向左移1位,相当于*2>>:在一......
  • 2021-2022-1 20211420《信息安全系统设计基础》课程总结
    每周作业链接汇总第一周作业2021-2022-120211420《信息安全专业导论》第一周学习总结2021-2022-120211420《信息安全专业导论》自我介绍2021-2022-120211420《......