1 Star 0 Fork 0

kongfu/py3Utils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
bit_operator.py 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
kongfu 提交于 2018-02-07 17:02 . websocket,移位运算更深刻的理解
#位操作相关知识记录
#左移会变大,右移会变小,因为高位在左边
#正整数左移一位相当于乘以2,右移一位相当于除以2
'''
左移右移的规则 来自百度百科:s
https://baike.baidu.com/item/%E5%8F%B3%E7%A7%BB%E8%BF%90%E7%AE%97%E7%AC%A6/3828526?fr=aladdin
左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。
右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,
或者补符号位,这由不同的机器而定。
还可利用右移运算符计算a的第b个二进制位是什么 例如:
(a>>b)&1; 该方法原理是,a向右移动b位之后,第b位就是最高位(不包括符号位),那个再和1进行and运算
#简单来说右移的规则:各位按位右移,最低位向右移出(丢弃),最高位产生的空位填入与原最高位相同的值,即符号位不变
例如:
153 10011001
右移两位:
38 100110
'''
def check_bit(num,bitNum):
'''
通过左移 判断某个数的某位是0还是1
'''
operNum = 1 << bitNum #得到的结果该位上肯定是 1 其余位是 0
result = num & operNum #执行and运算
return result > 0
def check_bit2(num,bitNum):
'''
通过右移判断某个数的第几位是0还是1
'''
ret = num >> bitNum & 1
return ret>0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/kongfu/py3Utils.git
[email protected]:kongfu/py3Utils.git
kongfu
py3Utils
py3Utils
master

搜索帮助