/*
编写一组函数, 实现位数组. 函数的原型如下:
void set_bit( char bit_array[], unsigned int bit_number );
void clear_bit( char bit_array[], unsigned int bit_number );
void assign_bit( char bit_array[], unsigned int bit_number, int value );
int test_bit( char bit_array[], unsigned int bit_number );
每个函数的第一个参数是个字符数组, 用于实际存储所有的位. 第二个参数用于标识需要访问的位.
函数的调用者必须确保这个值不要太大, 以至于超出数组的边界.
第一个函数把指定的位设为1, 第二个函数则把制定的位设为0.
如果value的值为0, 第三个函数把指定的位设为0, 否则设为1.
至于最后一个函数, 如果参数中指定的位不是0, 函数就返回真, 否则返回假.
*/
typedef char bool;
#define true 1
#define false 0
#include <stdio.h>
void set_bit( char *BitArray, unsigned int BitNumber )
{
unsigned int offset = BitNumber / 8; //offset表示参数BitNumber代表的位在BitArray中所在的字节
unsigned char bit = BitNumber % 8; //bit表示参数BitNumber代表的位在offset这个字节的具体位
char tmp = 1;
tmp <<= bit; //tmp 的bit位(从左往右)为1, 其余为0
BitArray[offset] |= tmp
C和指针_编程练习_第5章_第4题
最新推荐文章于 2022-09-12 13:34:42 发布