首页 > 其他分享 >test_bit(置位判断函数)的几种实现方法

test_bit(置位判断函数)的几种实现方法

时间:2023-01-30 11:55:26浏览次数:47  
标签:置位 int tbit unsigned test bit nr

方法一

static inline int test_bit(int nr, const volatile void * addr)
{
        return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
}

方法二

#include <asm/types.h>
static __always_inline int test_bit2(unsigned int nr, const unsigned long *addr) { return ((1UL << (nr % __BITS_PER_LONG)) & (((unsigned long *)addr)[nr / __BITS_PER_LONG])) != 0; }

方法三

static inline int test_bit3(unsigned int nr, const volatile unsigned long *addr)
{
        unsigned long mask;
addr += nr >> 5; mask = 1UL << (nr & 0x1f); return ((mask & *addr) != 0); }

测试代码

int main(int argc, char *argv[])
{
        int value = atoi(argv[1]);
        int tbit = atoi(argv[2]);

        //int retval = test_bit(tbit, &value);
        //int retval = test_bit2(tbit, (unsigned long *)&value);
        int retval = test_bit3(tbit, (unsigned long *)&value);
        if (retval)
                printf("bit-%d is set\n", tbit);
        else
                printf("bit-%d is not set\n", tbit);

        return 0;
}

测试结果

 

标签:置位,int,tbit,unsigned,test,bit,nr
From: https://www.cnblogs.com/wanglouxiaozi/p/17075052.html

相关文章

  • 火山引擎 DataTester:“在字节,A/B 实验是一种信仰”
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群进入数字经济时代,要用数据驱动业务增长已经成为各个行业的共识,但很多企业还没能真正掌握这项......
  • hdu:Two Rabbits(区间DP)
    ProblemDescriptionLonglongago,therelivedtworabbitsTomandJerryintheforest.Onasunnyafternoon,theyplannedtoplayagamewithsomestones.Th......
  • DA子卡设计资料原理图保存:FMCJ465-2路 16bit 12.6GSPS FMC DA子卡
    FMCJ465-2路16bit12.6GSPSFMCDA子卡一、板卡概述:   FMCJ465是一款转换速率最高为12.6GSPS的 DAC回放板,DAC位数16bit; 板卡基于ADI的AD9172系列......
  • 测试开发必知必会:Pytest框架实战
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试应用场景:......
  • (AtCoder Beginner Contest 287)(D 字符串前后缀合并匹配)(E Trie求最长公共前缀(LCP)
    D-MatchorNot(字符串前后缀合并匹配)题目大意:给定两个字符串S和T,对于每个x=0,1,2...|T|求S的子串(前x个字符和后|T|-x个字符在不改变顺序的情况下组成)是否与T相......
  • 【字典树】Atcoder Beginner Contest 287----E
    题目:E-Karuta(atcoder.jp)题解:这道题就是一个字典树求最长公共前缀的板子题。可以直接交板子。但我在翻题解的时候发现了另一种思路,就是将字符串按字典序排列后,每一个......
  • Rabbitmq 与kafka
    Rabbitmq比kafka可靠,kafka更适合IO高吞吐的处理,比如ELK日志收集Kafka和RabbitMq一样是通用意图消息代理,他们都是以分布式部署为目的。但是他们对消息语义模型的定义的假设......
  • RabbitMQ之五种消息模型
     首先什么是MQMQ全称是MessageQueue,即消息对列!消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生......
  • 《RabbitMQ实战指南》笔记
    1.RabbitMQ简介1.1什么是消息中间件消息队列中间件(MessageQueueMiddleware,简称为MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行......
  • Pytest插件pytest-rerunfailures失败重跑
    Pytest插件pytest-rerunfailures失败重跑安装pipinstallpytest-rerunfailuresdochttps://github.com/pytest-dev/pytest-rerunfailureshttps://pypi.org/project/......