zoukankan      html  css  js  c++  java
  • 位集合

    #include <stdio.h>
    #include <limits.h>
    #include <string.h>
    
    unsigned character_offset(unsigned bit_number);
    unsigned bit_offset(unsigned bit_number);
    
    /**
     * 将位集合中指定的位设置为0
     */
    void
    set_bit(char bit_array[], unsigned bit_number)
    {
            bit_array[character_offset(bit_number)] |= 
                    1 << bit_offset(bit_number);
    }
    
    void
    clear_bit(char bit_array[], unsigned bit_number)
    {
            bit_array[character_offset(bit_number)] &=
                    ~(1 << bit_offset(bit_number));
    }
    
    void
    assign_bit(char bit_array[], unsigned bit_number, int value){
            if(value != 0){
                    set_bit(bit_array, bit_number);
            }else{
                    clear_bit(bit_array, bit_number);
            }
    }
    
    int test_bit(char bit_array[], unsigned bit_number)
    {
            return (
                            bit_array[character_offset(bit_number)]
                            & 1 << bit_offset(bit_number)
                    ) != 0;
    }
    
    unsigned
    character_offset(unsigned bit_number)
    {
            return bit_number / CHAR_BIT;
    }
    
    unsigned
    bit_offset(unsigned bit_number)
    {
            return bit_number % CHAR_BIT;
    }
    
    int
    main()
    {
            char bit_array[10];
            memset(bit_array, 0, 10);
            set_bit(bit_array, 2);
            if(test_bit(bit_array, 2)){
                    printf("2-ok
    ");
            }
            if(test_bit(bit_array, 3)){
                    printf("3-ok
    ");
            }
    }
  • 相关阅读:
    (一)3、安装jexus
    走向全栈之坑—开始实践
    java Collection.stream操作
    redis常用命令练习
    Spring4
    java数据提交时问题
    常见协议默认端口
    重写equals方法
    redis
    xml
  • 原文地址:https://www.cnblogs.com/bai-jimmy/p/5205728.html
Copyright © 2011-2022 走看看