内核当中的test_bit宏

本文介绍了Linux内核中的test_bit宏,用于检测给定位数是否在指定地址的位字段中设置。通过示例解释了如何使用该宏进行编译时常量判断,并详细分析了宏的内部计算过程,帮助理解其工作原理。
摘要由CSDN通过智能技术生成

 

1.对于编译时的常数使用上面的函数进行判断

假设我们要测试的数为test = 0x00000008,它的第三位是否为1(位数是从0数起),即nr = 3 = 0x00000003,addr就是我们测试的数的地址

addr = &test; 对于运算addr[nr >> 5] = addr[0] 也就是test的值

对于前面部分 1UL左移3位,其值就是0x00000008,它们&运算后,结果是0x00000008 != 0,所以return的结果返回是1

即0x00000008的第3位是1,其结果也确实是1。其他的情况照样子可以这样子验证。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值