2013-05-23 2 views
2

MSB가 설정되면 이진수의 MSB 만 반전시키고 다른 비트는 변경하지 않는 것이 가장 좋습니다. 예를 들어비트 단위 연산을 사용하여 이진수의 MSB 만 반전합니다.

당신이 비트를 볼 수 이진수가, 00b 인 내가 0011을 얻을

and ah, 00b 

와 I가와 아 도끼의 첫 번째 절반 시도 1111

인 경우 내가 그랬을 때 MSB 옆에도 변경됨

다른 비트를 변경하지 않고 어떻게 최상위 비트만 변경해야합니까? 사전에

감사 모든

답변

3

먼저 AND 정말 어떤 비트를 반전하지 않는다; 그것 그들을 지 웁니다.

당신은 당신이 할 수 AX의 최상위 비트를 반전하려면 :

XOR AX,0F000h 

또는 최상위 바이트 :

XOR AX,8000h 

또는 가장 중요한 니블에 대한

XOR AX,0FF00h 

등등.

+0

나는 왜 우리가 8000h를 사용하고 있는지 물어볼 수 있습니까? – bluebk

+1

'8000h'은 '1000000000000000b'입니다. 바이너리 (또는 십진수)보다 16 진수로 비트 마스크를 작성하는 것이 훨씬 더 편리합니다. – Michael

관련 문제