我有-9作为整数,如何将其转换为C中的5位2s补码整数?基本上得到10111?
我目前的代码是什么样的:
char src2[3] = "-9";
int int_src2 = atoi(src2);
int_src2 = int_src2 & 31;
我的直接想法是int_src2是8388112,当AND操作后设置为16时 - 而我想要10111
答案 0 :(得分:0)
您可以使用位域和联合的组合:
#include <stdio.h>
typedef struct
{
unsigned int bit1:1;
unsigned int bit2:1;
unsigned int bit3:1;
unsigned int bit4:1;
unsigned int bit5:1;
} five;
typedef union {five f; int i;} u;
int main() {
u test;
test.i = -9;
printf("%u%u%u%u%u\n",test.f.bit5,test.f.bit4,test.f.bit3,test.f.bit2,test.f.bit1);
return 0;
}