【发布时间】:2014-04-19 17:34:55
【问题描述】:
我的问题是基于这篇文章:Decimal to Binary,它是选择的解决方案。
我可以让选择的答案代码工作,但它只适用于 5 位。如何修改此代码以适用于更大的数字,比如 8 位?
我尝试将第一行中的字符偏移量从 5 调整为 8,但没有成功。
void getBin(int num, char *str)
{
*(str+5) = '\0';
int mask = 0x10 << 1;
while(mask >>= 1)
*str++ = !!(mask & num) + '0';
}
并使用给定的代码进行测试,再次调整 6 到 9 以匹配上面的函数:
int main()
{
char str[6];
getBin(10, str);
printf("%s\n", str);
return 0;
}
但输出仍然只显示前五位,然后给出随机符号。有人可以解释一下当我调整这些数字时到底发生了什么,以便我可以让它适用于 8(或任何其他大小)位转换吗?
【问题讨论】:
标签: c binary decimal bit-manipulation