编写一个C语言函数用于设置一个位数组中的某个指定位,将这些位打包到一个字节数数组中,其中每个字节含8位.该函数必须精确地带有两个参数:第一个是直接数组的名称,第二个事要设置的

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 07:38:06

编写一个C语言函数用于设置一个位数组中的某个指定位,将这些位打包到一个字节数数组中,其中每个字节含8位.该函数必须精确地带有两个参数:第一个是直接数组的名称,第二个事要设置的
编写一个C语言函数
用于设置一个位数组中的某个指定位,将这些位打包到一个字节数数组中,其中每个字节含8位.该函数必须精确地带有两个参数:第一个是直接数组的名称,第二个事要设置的位的下标(从0开始).函数原形如下:
void setbit()BYTE8 bits[ ],int index;
函数原形如下:
void setbit(BYTE8 bits[ ],int index);

编写一个C语言函数用于设置一个位数组中的某个指定位,将这些位打包到一个字节数数组中,其中每个字节含8位.该函数必须精确地带有两个参数:第一个是直接数组的名称,第二个事要设置的
typedef unsigned char BYTE8;
void setbit(BYTE8 bits[], int index)
{
int a = index>>3;/*计算字节数*/
int b = index&7;/*计算字节内的位数*/
BYTE8 mask=0x80;/*第一位是1的掩码*/
bits[a] |= (mask>>b);
}
PS:顺便写个取得某一个位是0还是1的函数.
int getbit(BYTE8 bits[], int index)
{
int a = index>>3;/*计算字节数*/
int b = index&7;/*计算字节内的位数*/
BYTE8 mask=0x80;/*第一位是1的掩码*/
return (bits[a] & (mask>>b))!=0;
}