2017-01-18 1 views
0

같은 :바이트를 파일에 쓸 때 CPython에서 "& 0xff"를 사용하는 이유는 무엇입니까?

static void w_long(long x, WFILE *p) 
{ 
    w_byte((char)(x  & 0xff), p); 
    w_byte((char)((x>> 8) & 0xff), p); 
    w_byte((char)((x>>16) & 0xff), p); 
    w_byte((char)((x>>24) & 0xff), p); 
} 

그리고 PYC 파일을 읽을 수없는 이유를 CONST 텍스트/문자열이 무엇입니까?

+3

가능한 복제 (http://stackoverflow.com/questions/10493411/what-is-bit-masking) –

+0

두 번째 : 예를 들어


질문은 이해하기 어렵습니다. 당신은 어쨌든 질문 당 하나의 질문을해야합니다. –

답변

1

& 0xff은 숫자에서 마지막 8 비트 (또는 1 바이트)를 취합니다. 이렇게하면 한 번에 한 바이트 만 파일에 쓰게됩니다 (이 경우 little endian 바이트 순서 저장에 사용).

0xff은 이진수가 1111 1111입니다. 논리 값 and을 실행하면 이 x에 있고 마지막 8 비트 내에있는 모든 비트가 켜집니다.

x = 0010 0100 1001 0111 
         & 
       1111 1111 
    ------------------- 
    0000 0000 1001 0111 
[? 무슨 비트 마스크입니다]의
관련 문제