int main()
{
int x=24; // int whose 32 bits i need
int n=32; // number of bits needed
int p=0; // starting position.
int py[32]=getBits(x,p,n);
printf("\n",py);
return 0;
}
unsigned getBits(unsigned x, unsigned p, unsigned n) {
return (x >> (p + 1 - n)) & ~(~0 << n);
}
答案 0 :(得分:3)
这里有很多错误,例如在运行时分配给数组。
要将32位int的各个位存储到数组元素中,可以使用以下方法。
//assumes bits has been declared as unsignef char bits[32]
void get_bits32(unsigned char * bits, unsigned int x) {
for(int i = 0; i < 32; i++)
bits[i] = (x >> i) & 1u;
}
您可以如下修改此参数以指定位数或数组长度。
void get_bits32(unsigned char * bits, int n, unsigned int x) {
for(int i = 0; i < n; i++)
bits[i] = (x >> i) & 1u;
}
这里使用了一个char数组,因为您预期只有0或1s。
此版本将最低有效位存储在数组的位置0。
要打印此图像,必须打印数组的每个元素,例如。
for(int i = 0; i < n; i++)
printf("%d", bits[i]);