开发者学堂课程【Python入门 2020年版:位运算】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10255
位运算
内容介绍
一、应用及规则
二、分类
三、练习
一、应用及规则
1.应用:在 python 中运用较少,C 语言早期运用较多,属于偏底层的运算。
2.规则:按位运算符是把数字看作是二进制来进行计算。
二、分类
1. &按位与运算
(1)规则:0&0=0;0&1=0;1&0=0;1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0【有0则0】
(2)例:
a=23
b=15
print(a&b)=7
首先将所有数字转化为二进制
23转化为二进制为00010111
15转化为二进制为00001111
根据同为1则为1,否则为0可得出结果为00000111
结果转化为十进制则为数字7
2.|按位或
(1)规则:0|0=0;0|1=1;1|0=1;1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1【有1则1】
(2)例:
a=23
b=15
print(a|b)=31
首先将所有数字转化为二进制
23转化为二进制为00010111
15转化为二进制为00001111
根据有1则1可得出结果为00011111
结果转化为十进制为数字31
3.^按位异或
(1)规则:0^0=0;0^1=1;1^0=1;1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),
则该位结果为1,否则为0【同0异1】
(2)例:
a=23
b=15
print(a^b)=24
首先将所有数字转化为二进制
23转化为二进制为00010111
15转化为二进制为00001111
根据相同为0,不同为1可得出结果为00011000
结果转化为十进制为数字24
4.~按位取反
涉及到负数的二进制,此处不做讲解。
5.<<按位左移
(1)规则:一个数左移n位相当于这个数乘以2的 n 次方。
(2)例:
x=5
print(x<<2)=20
首先将5转化为二进制为0101
左移2位即在右边补两位数字0得出结果为010100
x=5
print(x<<3)=40
简便方法可知5左移3位等于5乘以2的三次方得出结果为40。
6.>>按位右移
(1)规则:一个数右移n位相当于这个数除以2的 n 次方。
(2)例:
y=15
print(y>>2)=3
首先将15转化为二进制为1111,
右移两位会丢失数据,即0011
转化为十进制为数字3。
三、练习
1.题目:难度较高,只需要能看懂代码即可,不要求写出。
使用位运算获取到十六进制颜色0xF0384E 的 RGB 值,以十进制输出。
2. 方法:使用位运算算出对应的数值
F0转化为十进制为240,赋值给 red
38转化为十进制为56,赋值给 green
4E 转化为十进制为78,赋值给 blue
在填充工具中设置
red=0xF0
green=0x38
blue=0x4E
注:所有东西掌握后可以研究此题,不必浪费太多时间在该题目上。