zoukankan      html  css  js  c++  java
  • C语言

    实现位数组

    Table of Contents

    1 问题

    编写一组函数,实现位数组。函数的原型应该如下:

    void set_bit(char bit_array[],unsigned bit_number);
    void clear_bit(char bit_array[],unsigned bit_number);
    void assign_bit(char bit_array[],unsigned bit_number,int value);
    void test_bit(char bit_array[],unsigned bit_number);
    

    每个函数的第一个参数是个字符数组,用于实际存储所有的位。第二个参数用于标识需要访问的位。函数的调用者必须确保这个值不要太大,以至于超出数组的边界。第一个函数把指定的位设置为1,第二个函数则把指定的位清零。如果value的值为0,第三个函数把指定的位清0,否则设置为1。至于最后一个函数,如果参数中指定的位不是0,函数就返回真,否则返回假。

    2 解答

    #define CHAR_BIT (sizeof(char)*8)
    void set_bit(char bit_array[],unsigned int bit_number)
    {
        bit_array[bit_number/CHAR_BIT]|=1<<bit_number%CHAR_BIT;
    }
    void clear_bit(char bit_array[],unsigned int bit_number)
    {
        bit_array[bit_number/CHAR_BIT]&=~(1<<bit_number%CHAR_BIT);
    }
    void assign_bit(char bit_array[],unsigned int bit_number,int value)
    {
        if(value)
            set_bit(bit_array,bit_number);
        else
            clear_bit(bit_array,bit_number);
    }
    int test_bit(char bit_array[],unsigned int bit_number)
    {
        if(bit_array[bit_number/CHAR_BIT]&1<<bit_number%CHAR_BIT)
            return 1;
        else
            return 0;
    }
    

    Date: 2014-11-04T21:58+0800

    Author: kirchhoff

    从业电子嵌入式十多年,大家相互多交流学习 微信 : caohenry888 Email : 88410664@qq.com
  • 相关阅读:
    6、UITableView表的分割线左对齐
    5、清理mac缓存和关闭后台运行程序
    1、iOS9 HTTP 不能正常使用的解决办法
    在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode”
    java中的String类
    java思考题
    java思考
    java动手动脑思考
    大道至简第二章读后感
    JAVA训练参数求和
  • 原文地址:https://www.cnblogs.com/caohenry999/p/14379419.html
Copyright © 2011-2022 走看看