我在 (C) 中将十进制数转换为二进制数的函数正在为(某些数字)产生错误的输出! [无数组]
My function to convert decimal number into binary in (C) is producing wrong output for (some numbers)! [Without Arrays]
我有一个函数可以将十进制数转换为二进制数。
问题是对于某些数字,它的输出类似于:
27 = 00011011
但对于 5015,它会将其转换为 82630143 而不是 1001110010111
这是我的功能:
int dec(int num) {
long bNum = 0;
int remNum, i = 1, highNum = 32768;
while (num != 0) {
remNum = num / highNum;
remNum = num % 2;
num /= 2;
bNum = bNum + remNum * i;
i = i * 10;
}
return bNum;
}
任何帮助将不胜感激。
正如 mch
评论的那样,1001110010111
对于整数来说太大了。您可以尝试将其保存在 unsigned long long int
变量中,但实际上最好的方法是使用字符数组或字符指针。
你应该检查一下你的哪些变量不够
“space”用于存储您的号码。我检查并看到除了 bNum
你的其他变量 i
没有足够的 space:
unsigned long long int dec(int num) {
unsigned long long int bNum = 0,i = 1;// i should be unsigned long long
long int remNum, highNum = 32768;//highNum is better to be long int
while (num != 0) {
remNum = num / highNum;
remNum = num % 2;
num /= 2;
bNum = bNum + remNum * i;
i = i * 10;
}
return bNum;
}
并在您的 main
中检查您存储返回号码的位置:
int main()
{
unsigned long long int r;
int a;
scanf("%d", &a);
r = dec(a);
}
我有一个函数可以将十进制数转换为二进制数。 问题是对于某些数字,它的输出类似于:
27 = 00011011
但对于 5015,它会将其转换为 82630143 而不是 1001110010111
这是我的功能:
int dec(int num) {
long bNum = 0;
int remNum, i = 1, highNum = 32768;
while (num != 0) {
remNum = num / highNum;
remNum = num % 2;
num /= 2;
bNum = bNum + remNum * i;
i = i * 10;
}
return bNum;
}
任何帮助将不胜感激。
正如 mch
评论的那样,1001110010111
对于整数来说太大了。您可以尝试将其保存在 unsigned long long int
变量中,但实际上最好的方法是使用字符数组或字符指针。
你应该检查一下你的哪些变量不够
“space”用于存储您的号码。我检查并看到除了 bNum
你的其他变量 i
没有足够的 space:
unsigned long long int dec(int num) {
unsigned long long int bNum = 0,i = 1;// i should be unsigned long long
long int remNum, highNum = 32768;//highNum is better to be long int
while (num != 0) {
remNum = num / highNum;
remNum = num % 2;
num /= 2;
bNum = bNum + remNum * i;
i = i * 10;
}
return bNum;
}
并在您的 main
中检查您存储返回号码的位置:
int main()
{
unsigned long long int r;
int a;
scanf("%d", &a);
r = dec(a);
}