2015-02-06 3 views
4

부호없는 int x가 주어지면 n 번째 비트를 y로 설정하고 y는 0 또는 1 일 수 있습니다. 비트 연산자를 사용하여 표현식을 만들 수 있습니까? 조건문 사용? 감사.부호없는 int의 n 번째 비트 설정

+1

은 읽어 보시기 바랍니다 [질문 방법] (http://stackoverflow.com/help/how-to-ask). – segarci

답변

3
x = (x & (~(1 << n))) | (y << n) 

매우 간단합니다. (첫째, n 번째 비트를 취소 한 y1 경우 1n 번째 비트를 설정합니다.)

+0

그래도 한 줄에 있어도 조건이 있습니다. – Eun

+0

감사합니다! 나는 이런 식으로 생각하지 않았다. – user95297

+0

@Eun 조건에 따라 if-else 문이나 비슷한 것을 사용하여 y 값을 확인하지 않고도 의미가있었습니다. – user95297

0
x ^= (-y^x) & (1 << n); 
+0

이것은 무조건적인 것이 아닙니다. OP는 어떤 조건도없이 이것을 원합니다. – Eun

+0

저는 이것을 알고 있습니다 만, 두 경우 (y가 0 또는 1 인 경우)가 하나의 명령문으로 처리 될 수 있도록 표현식에 y를 포함시킬 수 있는지 궁금합니다. – user95297

+0

@Eun 당신이 옳다는 것에 대해 유감스럽게 생각합니다. 내 대답이 수정되었습니다. – emlai

관련 문제