代码拉取完成,页面将自动刷新
#位操作相关知识记录
#左移会变大,右移会变小,因为高位在左边
#正整数左移一位相当于乘以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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。