У меня возникли проблемы с выяснением того, как манипулирующие биты работают с C. Интересно, может ли кто-нибудь что-то прояснить для меня.Не удалось манипулировать битами с помощью C
Эти функции у меня есть для набора/получить/очистить бит
unsigned char getBit(unsigned char c, int n)
{
(c & (1<<n)) >> c;
return c;
}
unsigned char setBit(unsigned char c, int n)
{
c = c |(1<<n);
return c;
}
unsigned char clearBit(unsigned char c, int n)
{
c = c & (~1<<n);
return c;
}
и скажем, у меня есть unsigned char test = 3
в двоичной, 3 0000 0011
Так что, если бы я сделать printf("THIS IS THE VALUE AT BIT 0 = %hhu \n", getBit(test, 0));
Я думаю, что он вернется обратно 1
, но вместо этого он возвращает значение test
, которое 3.
мне было интересно, если я делаю что-то ж rong, мои функции get/set/clear кажутся правильными, я не правильно использую функции?
Заранее спасибо.
В какой момент 'getBit' изменить значение' c'? – Gabe
И почему он сдвигается на 'c' вместо некоторой функции' n'? –
getBit не должен менять значение c, он должен найти бит значение c, в n-й позиции. – johnnyboyyy