如何从C中的整数中提取位?
所以我尝试使用位移位和掩蔽从32位二进制整数中提取位,但我明显偏离了1如何从C中的整数中提取位?,c,binary,bit,bit-shift,C,Binary,Bit,Bit Shift,所以我尝试使用位移位和掩蔽从32位二进制整数中提取位,但我明显偏离了1 #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(" ");
#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;
}
#包括
int main(){
int number=87;//0000 0101 0111
int i;
整数位;
int g=0;
对于(i=32;i>0;i--){
如果(g%4==0&&g!=0){
printf(“”);
}
g++;
位=(数字>>i)&1;
printf(“%d”,位);
}
printf(“\n”);
返回0;
}
您的代码中缺少逻辑
使用
而不是
for(i **= 32**; i **>** 0; i--)
注释如果它对您有效您是否尝试过在调试器中逐行遍历代码?另外,请记住位数是以零为基础的。第一位是数字
0
,32位数字的最后一位是数字31
。你是怎么做到的?啊,没关系。愚蠢的loop把我甩了。谢谢你的提示
for(i **= 32**; i **>** 0; i--)