简体   繁体   English

如何从C中的整数中提取位?

[英]How to extract bits from an integer in C?

So i'm trying to extracts bits from a 32=bit binary integer using bit shifting and masking, but i'm sightly off by one. 因此,我尝试使用位移和掩码从32 = bit的二进制整数中提取位,但是我被淘汰了。

#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;
}

There is logic missing in your code.. 您的代码中缺少逻辑。

Use 采用

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

instead of 代替

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

Comment if it works for you 评论是否适合您

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM