2017-01-26 8 views
0

그래서 비트 이동 및 마스킹을 사용하여 32 비트 2 진 정수에서 비트를 추출하려고하지만, 나는 하나씩 떨어져 있습니다. 코드에서 누락 논리가있다C에서 정수에서 비트를 추출하는 방법은 무엇입니까?

#include <stdio.h> 

int main(){ 

    int number = 87; //0000 000 0000 0000 0000 0000 0101 0111 
    int i; 
    int bit; 
    int g = 0; 

    for(i = 32; i > 0; i--){ 

    if(g%4==0 && g!=0){ 
    printf(" "); 
    } 
    g++; 
    bit = (number >> i) & 1; 
    printf("%d", bit); 
    } 

    printf("\n"); 
return 0; 
} 
+0

는 스테핑 시도 되세요 코드에서 한 줄씩 도청 전문가? –

+0

또한 비트 번호는 0부터 시작한다는 것을 기억하십시오. 첫 번째 비트는 숫자 '0'이고, 마지막 비트는 32 비트 숫자 인 '31'입니다. –

+0

어떻게 할 수 있습니까? – christian

답변

1

..

사용

for(i **= 31**; i **>=** 0; i--) 

대신

for(i **= 32**; i **>** 0; i--) 

설명 당신을 위해 작동하는 경우

+0

예, 찾았습니다. 그래도 고마워 – christian