A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 sunyakai 于 2019-9-27 10:33 编辑

python中的位运算符是按照二进制位对值进行操作的,因此在学习位运算之前,我们来看看二进制运算。

二进制运算:
整数转二进制:将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK

负整数转换成二进制 :先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42。

小数转换为二进制 :对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列,举个例子吧,比如0.125 。


python中的位运算符:

1、与(&),按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
5&3 = 1   ---------- ------>    101  011   001   相同位仅为个位1 ,故结果为 1
2、或(|),按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1
5|3 = 7   ---------- ------>    101  011    出现1的位是 1 1 1,故结果为 111
3、异或(^),按位异或运算符:当两对应的二进位相异时,结果为1
5^3 = 6    ---------- ------>    101  011 对位相加是 1 1 0,故结果为 110
4、取反(~),按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
~5 = -6     ---------- ------>   ~x = -(x+1),-(101 + 1) = -110
~7 =    -(0111+1)=    -1000 =  -8
5、左位移(<<),运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0
5<<2 = 20   ---------- ------>  101 向左移动2位得到 10100 ,即右面多出2位用0补  
6、右位移(>>),把‘>>’左边的运算数的各二进制位全部右移若干位,>>右边的数字指定了移动的位数
5>>2 = 1   ---------- ------>  101 向右移动2位得到 001 ,即左边用0补





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马