2017-01-26 3 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

Смежные вопросы