2012-09-13 3 views

답변

6

이 작업을 수행 할 수 :

int check_zeros(int y) { 
    return (y & 0xff) != 0xff; 
} 

0xff는 (0 내지 0xFF) 8 비트 값이다 가정하면 1

+0

+1, 간단하고 자기 설명 – rkosegi

+0

가장 낮은 바이트 만 마스크하는 것을 잊어 버린 것 같습니다. – Mysticial

+0

@Mysticial : 감사합니다. "바이트"부분을 완전히 놓쳤습니다. 결정된. –

1

으로 설정된 모든 비트를 갖는 바이트를 나타냄

int check_zeros(int y) { 
    return y < 0xFF; 
    // alternatively: return y != 0xFF; 
} 
+0

@pst 정확히 8 비트 값 (0에서 0xFF까지)이라고 가정합니다. –

1

함수를 선언 했으므로 y는 바이트가 아니며 정수입니다. 그래서 y의 모든 비트가 0인지 알아 내고 싶다고 가정합니다. 나는`(X && 0xF입니다)`당신을 위해 무엇을하고 있었는지 확실하지 않다

int check_zeros(int y) 
{ 
    return ((~y) != 0); 
} 
+0

(int) ~ 0은 무엇을합니까? – sebi

+0

~ (틸다) 문자는 비트 NOT입니다. 모든 비트를 반전시킵니다. 따라서 (int) ~ 0은 논리적으로 모든 비트가 설정된 정수입니다 (해당 플랫폼의 sizeof (int)를 알 필요는 없습니다). 나는 tilda가 이제 y에 적용되고 0과 비교되도록 내 대답을 업데이트했습니다. 그냥 깨끗하게 보입니다. – selbie

관련 문제