2017-01-26 14 views
0

私はビットシフトとマスキングを使用して32ビットのバイナリ整数からビットを抽出しようとしていますが、私はそれを気にしています。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

のために働く場合は、ステッピングみましたコード内の行単位でdeバグ? –

+0

また、ビット番号はゼロベースであることに注意してください。最初のビットは数字「0」であり、32ビットの数字の最後のビットは数字「31」である。 –

+0

どうやってやるの? – christian

答えて

1

コード内で欠落しているロジックがあります。..

使用

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

代わり

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

コメントのそれはあなた

+0

ええ、私はそれを見つけた。ありがとう – christian

関連する問題