【发布时间】:2014-11-08 08:09:03
【问题描述】:
我正在编写一个将十进制转换为二进制的函数。它适用于小于 1024 的值,但我也需要它适用于 8 位数字。到目前为止我的功能:
static long int decToBin(int dec)
{
int bit;
int k;
long int bin = 0;
for (bit = 32; bit >= 0; bit--)
{
k = dec >> bit;
if (k & 1)
{
bin += exponentiate(10, bit);
}
}
return bin;
}
我对按位的东西比较陌生,所以问题出在哪里可能很明显,但我会很感激任何帮助。
编辑:我使用 C 语言编写,使用 GNU GCC 编译器。
【问题讨论】:
-
这听起来像是学习使用调试器的绝佳机会。 ;-)
-
int32 的最大值
-
int64 的最大值
-
将 32 位整数移位 32 是未定义的行为。另外,我相信,向右移动有符号整数是实现定义的。
-
提示:对于位移操作,您应该更喜欢无符号类型。
标签: c binary decimal bit-manipulation