C 비트연산에 대해 질문드려도될까용

sacredone의 이미지

1000000100100101

16비트에 저렇게 값을 설정해준 상태에서

1000000100000101

이렇게 오른쪽에서 6번째비트에 있는값을 1에서 0으로 바꿀려면

어떻게하면 좋을까요?

밑에있는값이랑 위에있는값이랑 & 하면될거같은데

밑에있는값을 구하는거라 ...

>>5 해서 5비트 떼고 1을 0으로 바꿔주면

떼어진 5비트 다시 원상복구를 어케시켜야할지;;

익명 사용자의 이미지

& 1111111111011111

익명 사용자의 이미지

1000000100100101 & ~(1<<5)

Set, Clear할 때 아래 표현을 자주 사용합니다.

|= (1 << bit)
&= ~(1 << bit)

참조하세요.

ymir의 이미지

static uint16_t clearbit(uint16_t val, int index)
{
    return val & ~(1 << index);
}

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

sacredone의 이미지

답변해주신분들 정말 감사합니다