2013-07-10 5 views
0

CHIP8 에뮬레이터를 쓰고 있습니다. 나는 opcode DXYN을 제외하고 지금까지 모든 것을 썼다. 나는 그것에 대한 설명이 필요했다. 그래서 그 질문에 대한 대답으로 코드를 찾았다. 코드를 읽는 동안 C에서 말하는이 코드 조각에 붙어있어 if((data & (0x80 >> x)) != 0) 정확히 (data & (0x80 >> x))은 무엇을합니까?CHIP8 에뮬레이터의 코드 이해

답변

2

우리가 그것을 분할하는 경우, 우리는 바로 x 비트에 의한 값 128 (0x80)를 이동

0x80 >> x 

있습니다.

다음 부분은 data의 마스크로 이전 결과를 사용하여 data에 설정된 특정 비트가 있는지 확인합니다.

그러면 비트가 설정되어 있는지 확인하기 위해 전체를 0으로 확인합니다.

3

if 문은 바이트에 비트 #x가 설정되어 있는지 확인하고 0을 최상위 비트로 계산합니다.

Bit#
     01001010 (0x4A has bit 1, 4 and 6 set) 

(data & (0x80 >> x)) returns 0x40 for x=1 
          0x08 for x=4 
          0x02 for x=6 
          0x00 for all other values. 

if((data & (0x80 >> x)) != 0)

는 말하면, X = 1, X = 4이고, x = 6

마찬가지이며