우리는 모두 마지막 1 비트를 0으로 설정하는 트릭 n & (n-1)을 알고 있습니다. 예 : 0110 & (0110-1) = 0100. 그 반대? 마지막 0을 1로 설정 하시겠습니까? 그래서 0110은 0111이 될까요?마지막 (최하위) 0 비트를 1로 설정하는 방법
나는 stackoverflow와 온라인에서 많은 양의 검색을 해왔다. 어떤 결과가
우리는 모두 마지막 1 비트를 0으로 설정하는 트릭 n & (n-1)을 알고 있습니다. 예 : 0110 & (0110-1) = 0100. 그 반대? 마지막 0을 1로 설정 하시겠습니까? 그래서 0110은 0111이 될까요?마지막 (최하위) 0 비트를 1로 설정하는 방법
나는 stackoverflow와 온라인에서 많은 양의 검색을 해왔다. 어떤 결과가
그냥 (물론, 정확히하지만 당신은 내가 무슨 뜻인지 얻을) 반대 할 최대 보여줍니다 : 수의 k
번째 비트를 설정 들어 n | (n+1)
을 바로 다음 작업을 수행하십시오
n=n|(1<< k)
여기서 k
은 설정하려는 비트입니다.
이 정보가 도움이되기를 바랍니다. 다른 비트 조작에 대한
, 당신은이 질문을 참조 할 수 있습니다 : Manipulation of bits
설정해야 할 비트가 무엇인지 알면 멋지게 작동합니다. –
@ vivek-pratap-chaurasia : 귀하의 대답은 "x의 특정 비트를 1로 설정"을 말합니다. 그러나 문제는 "처음 비트를 설정하지 않고 ** 마지막 0 비트 **를 1로 설정"입니다. 따라서 조작 후 "101"(5)는 "111"(7)이되어야합니다. –
한 마지막 제로 비트를 설정하려면, 당신이 하나를 추가 한 다음 비트 OR
(x + 1) | x
마지막 비트를 1로 설정하려면 :
x|1
@ fei-hsueh : 대답은 "x의 마지막 비트를 1로 설정"입니다. 그러나 문제는 "** 마지막 제로 비트 **를 1로 설정"입니다. 따라서 조작 후 "101"(5)는 "111"(7)이되어야합니다. –
비트 조작이 아니지만'x> = 0 '을 할 수 있습니까? (x - x % 2) : (x + x % 2)'. x가 부호없는 경우, 당신은 단지'x - x % 2'를 할 수 있습니다. – Scovetta
비트 단위 또는 1 단위 :'x = x | 1' ... 미안, 내 대답을 보아라, 나는 당신이 단지 오른쪽 비트를 하나에 맞추고 싶다고 생각했다. –