【发布时间】:2018-11-07 16:28:17
【问题描述】:
我有一个函数可以将整数转换为其二进制表示形式并将其存储在一个长变量中。我的问题是我的函数只转换正整数,所以我需要实现一个新函数,该函数将稍作改变以实现这一点。我仍然需要存放垃圾箱。代表。在一个长变量中,因为这取决于其他特征。有办法吗?
我的函数只成功转换正整数:
long convertToBin(int decn)
{
long binn = 0;
long rem;
long a = 1;
while(decn != 0)
{
rem = decn % 2;
binn = binn + rem * a;
a = a * 10;
decn = decn / 2;
}
return binn;
}
我已经这样尝试过了,但是有问题 - 不起作用......
long negConvertToBin(int decn)
{
long binn = 0;
decn = abs(decn);
decn = decn - 1;
decn = ~decn;
long rem;
long a = 1;
while(decn != 0)
{
rem = decn % 2;
binn = binn + rem * a;
a = a * 10;
decn = decn / 2;
}
return binn;
}
【问题讨论】:
-
在某些平台上,
long只有 32 位,它本身不能存储另一种 32 位类型的二进制表示(如int通常是),因为它太大了。如果你想显示二进制值,我建议你改用字符串,每个二进制数字一个字符(当然加上空终止符)。 -
它只用于较小的整数,所以应该没有问题......
-
我试过了,但出现了一些问题...你能修改我的函数来使用字符串吗?我的意思是返回字符串...
-
当你说“更小的整数”是什么意思?你需要多少位?
-
至于您的问题,将偶数负数视为无符号数。这将使从数字中获取位变得更加容易(但是您可能会得到比
binn变量容纳的更多的位很多)。
标签: c function binary long-integer signed