位操作相关宏与函数
来源:互联网 发布:淘宝店铺装修在哪里 编辑:程序博客网 时间:2024/06/01 17:56
这两个宏和那个函数是我从linux内核中截取出来的,在GCC编译器下(Dev C++)编译器下编译通过。
static inline int test_bit(int nr , const volatile void *addr) //测试位,测试addr的第nr位为0还是为1{ return 1 & (((const volatile unsigned int *)addr)[nr >> 5 ] >> (nr & 31)) ; }//设置位,把addr的第nr位置1#define set_bit(nr,addr) ({\ register int res;\ __asm__ __volatile__("btsl %2,%3\n\t setb %%al"\ :"=a"(res) :"0" (0),"r"(nr),"m"(*(addr)));\ res;})//清位,把addr的第nr位清0#define clear_bit(nr,addr) ({\ register int res;\ __asm__ __volatile__("btrl %2,%3\n\t setnb %%al"\ :"=a"(res):"0"(0),"r"(nr),"m"(*(addr)));\ res;})
后面这几个是我模仿内核来写的两个以C实现的程序,比较容易理解:
static inline int __set_bit(int nr, const volatile void *addr){ unsigned long *add = (unsigned long *)addr ; return add[nr/32] |= (1UL << (nr % 32)); }static inline int __clr_bit(int nr , const volatile void *addr){ unsigned long *add = (unsigned long *)addr ; return add[nr/32] &= ~(1UL << (nr %32)); }
0 0
- 位操作相关宏与函数
- C常用位操作相关宏定义
- 位运算操作相关
- 位运算操作相关
- 位运算相关操作
- 一道和位与操作(&)相关的趣题
- 按位与、或、异或等的相关操作
- 按位与& 与 逻辑与 && 以及位操作相关基础和题型
- 对32位的无符号int的位进行操作的一些相关函数
- 位操作相关资料汇总
- 一些位操作函数
- 位操作函数
- 一个位操作函数
- 位操作与位字段
- 位操作小结与宏定义
- 按位与操作
- 位操作与权限
- 位操作与权限
- ActiveMQ多个消费者消费不均匀问题
- HTML5离线存储和本地缓存
- java GET请求乱码问题
- android view 浅析
- UIWebView(App TransportSecurity has blocked a cleartext HTTP (http://) resource load since it isins)
- 位操作相关宏与函数
- 3D坐标系、矩阵变换、视景体与裁剪
- JAVA必杀技-超越模式的泛型
- 第1章 MySQL Python连接器的介绍
- java线程 如何处理并发
- java中 SSL认证和keystore使用
- iOS所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程
- 学习c#不容错过的网站
- 学习JAVA必写的第一个程序