gpt4 book ai didi

c - 如何在 C 中将 int 转换为 5 位 2 补码?

转载 作者:行者123 更新时间:2023-11-30 17:13:54 26 4
gpt4 key购买 nike

我有 -9 作为一个整数,我如何将其转换为 C 中的 5 位 2 补码整数?本质上是得到 10111?

我当前的代码是什么样的:

char src2[3] = "-9";
int int_src2 = atoi(src2);
int_src2 = int_src2 & 31;

当 AND 运算后 set 为 16 时,我的第一 react 是 int_src2 是 8388112 - 而我想要的是 10111

最佳答案

您可以使用位域和 union 的组合:

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

实例:https://ideone.com/ow0Bl6

关于c - 如何在 C 中将 int 转换为 5 位 2 补码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com