69,336
社区成员
发帖
与我相关
我的任务
分享
#include <limits.h>
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);
int test_bit(char bit_array[], unsigned bit_number);
unsigned character_offset(unsigned bit_number);
unsigned bit_offset(unsigned bit_number);
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;
}
void set_bit(char bit_array[], unsigned bit_number)
{
bit_array[bit_number - 1] = '1';
}
void clear_bit(char bit_array[], unsigned bit_number)
{
bit_array[bit_number - 1] = '0';
}
void assign_bit(char bit_array[], unsigned bit_number, int value)
{
if (value)
bit_array[bit_number - 1] = '1';
else
bit_array[bit_number - 1] = '0';
}
int test_bit(char bit_array[], unsigned bit_number)
{
return (bit_array[bit_number - 1] != '0');
}
void
set_bit(char bit_array[], unsigned bit_number)
{
bit_array[character_offset(bit_number)] |=
1 << bit_offset(bit_number);
}
把指定的bit位设置为1,如2个字节的字符数组
第二列的数字是bit位的下标,第一列是各个bit位的内容、
调用set_bit(bit_array, 2);后的效果是:
[/quote]
本来我也是这样理解的自己写出来的代码也可以用,可是书上答案的代码,这样测试行不通啊[/quote]
如何行不通
void
set_bit(char bit_array[], unsigned bit_number)
{
bit_array[character_offset(bit_number)] |=
1 << bit_offset(bit_number);
}
把指定的bit位设置为1,如2个字节的字符数组
第二列的数字是bit位的下标,第一列是各个bit位的内容、
调用set_bit(bit_array, 2);后的效果是:
[/quote]
本来我也是这样理解的自己写出来的代码也可以用,可是书上答案的代码,这样测试行不通啊
void
set_bit(char bit_array[], unsigned bit_number)
{
bit_array[character_offset(bit_number)] |=
1 << bit_offset(bit_number);
}