基础篇14-答疑课-python里面这些难缠的符号们

答疑课

aa = [(2*(x/2)>>0,2*(x%2)) for x in xrange(4)]    ##这里不明白
print [((x>>1)<<1,(x & 1)<<1) for x in xrange(4)] ##这里不明白


一.先得讲讲二进制。

0 + 1 + 1 9 +1  = 10

99 +1 = 100

0 +1 = 1

1 +1 = 10

10 +1 = 11

11 +1 =  100

100 + 1 = 101

101 + 1 = 110


二.难缠符号来啦。

 

bin方法:python的内置方法,将十进制的数字转换成二进值对应的字符串

0b打头代表二进制

 

1.难缠符号之一 >> <<
位移:    右位移、左位移   移的是二进制位

计算公式:左位移乘2的n次方,右位移除2的n次方,小数舍弃

 

2.难缠符号之二 &
按位与

首先靠右对齐(左侧用0补齐),再逐位与

 

3.难缠符号之三 |

按位或

首先靠右对齐(左侧用0补齐),再逐位或

 

4.难缠符号之四 ^

按位异或

一个为真一个为假的时候为真

 

5.难缠符号之五~

按位取反

现在计算机普遍使用补码表示负数。知道一个数的补码,要求其值的方法是:首先看符号位也就是最左的一位,如果是1代表是负数(-)如果是0代码是正数(+),然后对该值取反再+1,得到其源码。

假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101

执行~运算,即~5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6

 

三.其他

1.&之奇偶判定  

1)对2取余,0为偶数,1为奇数

2)与1按位与,0为偶数,1为奇数    本质是看数字的二进制码最后一位是0还是1

 

2.计算硬盘容量

字节数右位移10位,相当于除1024

 

这些符号的用处:帮助进行逻辑判断

按位与和普通的与相同:

 

条件语句中使用:

 


四.回过头来再看这道题

aa = [(2*(x/2)>>0,2*(x%2)) for x in xrange(4)]    ##这里不明白

这里的/除号,在python2中是取整;在python3中会转成float型。位移操作与乘除操作先后顺序一样。
print [((x>>1)<<1,(x & 1)<<1) for x in xrange(4)] ##这里不明白

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值