• linux kernel bisops.h


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

      

    参数nr  第几位

    参数addr  测试数的地址可以为数组

    #include <stdio.h>
    
    
    static inline int
    test_bit(int nr, const volatile void * addr)
    {
        return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
    }
    
    
    int main()
    {
        int a[] = {1, 1, 1};
    
        for (int i = 0; i < sizeof(a) * 8; ++i)
        {
            printf("%d: %d
    ", i, test_bit(i, a));
        }
    
        return 0;
    }
    

      输出:

    0: 1
    1: 0
    2: 0
    3: 0
    4: 0
    5: 0
    6: 0
    7: 0
    8: 0
    9: 0
    10: 0
    11: 0
    12: 0
    13: 0
    14: 0
    15: 0
    16: 0
    17: 0
    18: 0
    19: 0
    20: 0
    21: 0
    22: 0
    23: 0
    24: 0
    25: 0
    26: 0
    27: 0
    28: 0
    29: 0
    30: 0
    31: 0
    32: 1
    33: 0
    34: 0
    35: 0
    36: 0
    37: 0
    38: 0
    39: 0
    40: 0
    41: 0
    42: 0
    43: 0
    44: 0
    45: 0
    46: 0
    47: 0
    48: 0
    49: 0
    50: 0
    51: 0
    52: 0
    53: 0
    54: 0
    55: 0
    56: 0
    57: 0
    58: 0
    59: 0
    60: 0
    61: 0
    62: 0
    63: 0
    64: 1
    65: 0
    66: 0
    67: 0
    68: 0
    69: 0
    70: 0
    71: 0
    72: 0
    73: 0
    74: 0
    75: 0
    76: 0
    77: 0
    78: 0
    79: 0
    80: 0
    81: 0
    82: 0
    83: 0
    84: 0
    85: 0
    86: 0
    87: 0
    88: 0
    89: 0
    90: 0
    91: 0
    92: 0
    93: 0
    94: 0
    95: 0
  • 相关阅读:
    CentOS 7 iSCSI 多路径Multipath配置
    Centos7 GRE Tunnel
    ESXi开启虚拟化
    ownCloud 10.2.1搭建云盘服务器
    cinder不同类型volume转换
    linux的bond及子接口配置
    openstack 平台添加vGPU
    ownCloud 10.2.1搭建云盘服务器
    openstack nova 热迁移问题
    bugku-web40对git命令的使用
  • 原文地址:https://www.cnblogs.com/mude918/p/14202853.html
Copyright © 2020-2023  润新知