Python 位运算 & >>

文章介绍了Linux权限系统中基于二进制的表示方法,如100代表读权限,111代表读写执行权限。接着展示了如何使用二进制位运算来控制路由权限,例如用户5有查和改权限。此外,还讨论了位运算在判断奇偶数和实现折半查找中的作用,如向右位移1相当于整除2。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux权限系统

100    读 4

10      写 2

01      执行 1

110    可读写 6
101    可读执行 5
11      可写执行 3
111     可读写执行 7

 &  二进制对位 相同返1,否则返0

场景:路由权限

1   0b1 查

2   0b10 增

4   0b100 改

8   0b1000 删

用户   0         黑名单,权限全无

用户   5   0b101       有查,改权限,无添加,删除

用户   7   0b111    有查,增,改权限, 无删除

user = 7
dic = {'GET': 0b1, 'POST': 0b10, 'PUT': 0b100, 'DELETE': 0b1000}


def my_auth(func):
    def wrapper(*args):
        if user & dic[args[0]]:
            func(*args)
        else:
            print(f"{args[0]}没权限")

    return wrapper


@my_auth
def view(name):
    print(f'{name}进入视图')
    pass


view("GET")
view("POST")
view("PUT")
view("DELETE")
打印结果
GET进入视图
POST进入视图
PUT进入视图
DELETE没权限

场景:求奇偶数

偶数&1 得0         奇数&1 得1

2 & 1        0

3 & 1        1

4 & 1        0

5 & 1        1

位移        向右位移 >>        向左位移<<

>>1场景:折半查找

3 >> 1 位移性能高于整除 3 // 2

3 >> 1  3位移一位,相当于3整除2一次,位移2位相当于整除2两次

print(200>>3)       # 200 整除2 整除2 再整除2 结果为25

print(200<<3)       # 200 乘以2 乘以2 再乘以2 结果为1600

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值