这段代码是将十进制数转换为二进制数的函数的一部分,将其放置在 char instBin[33] 的特定索引中,该索引由调用函数通过引用创建和传递。它传入十进制数,即您想要的二进制位数(在给定的 bin 编号前面附加额外的 0)。我已经摆弄了一段时间,但我无法将 0 和 1 放入数组中。我已经明白了 instBin[i] = '1'; 根本不工作——当我打印 instBin 时,什么也没发生。我看过其他做这种事情的例子,但似乎在选择索引时给一个字符数组一个变量应该工作......有什么想法为什么我的不是?
int printBin(int num, int numBits, int startIndex, char * instBin){
int r, i; /* r for remainder, i for index */
const int FAIL = 0;
i = startIndex + numBits; /* start indexing at end of current segment */
while (num > 0)
{
/* as long as i >= startIndex, we can still add to array */
if (i >= startIndex){
r = num % 2; /* find the remainder */
if (r == 1)
instBin[i] = '1';
else /* r == 0 */
instBin[i] = '0';
num /= 2; /* then actually divide the number */
i--;
}
else /* num is too big to fit in given number of bits */
return FAIL;
}
/* return the 1 for success*/
return 1;
}