gpt4 book ai didi

在C中将负十进制转换为二进制

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:41 24 4
gpt4 key购买 nike

我目前正在开发一个程序(除其他外)必须将十进制数转换为二进制、八进制和十六进制。这已经适用于此代码:

    int e = 0;
}
while(i != 0){
str[e] = (i%b) + '0';
i = i / b;
if(str[e] > '9'){
str[e] = str[e] + 7;
}
e++;

}
if(vorzeichen == -1){
str[e] = '1';
e++;
}
if(b == 16){
str[e] = 'x';
str[e+1] = '0';
}
else if(b == 8){
str[e] = '0';
}
}

b 是基数(二进制为 2,八进制为 8,六进制为 16),i 是我要转换的数字。这给出了一串字符,然后我将其反转以获得正确的数字。现在,如果我尝试使用负数,它给出的字符串不仅包含 0 和 1,而且还包含/,在 ASCII 表中为 '0' -1。对于八进制和十进制,它还会给出 ASCII 表中“/”下方的字符。我尝试了不同的可能解决方案,但似乎没有一个能给出预期的结果。我在互联网上读到的是我必须使用 2s 补码我一直在尝试使用它。它似乎对我不起作用。

最佳答案

如果你想显示一个负小数,你可以将你的 int 转换成一个 unsigned int 像这样:

unsigned int value = (unsigned int)i;

现在你只需要在你的程序中使用value而不是i就可以了。这是对原因的一个很好的解释:Converting negative decimal to binary

关于在C中将负十进制转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53446176/

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