十进制到二进制输出

时间:2016-11-30 13:34:16

标签: c++ arrays binary char

将十进制转换为二进制的方法:

string toBinary(unsigned int n) {

 char binary[33] = {0}; // char array with 0 value in each index
 int ix = 32;

 do {
    binary[--ix] = '0' + n % 2; // adding remainder to specific index
    n /= 2; // dividing n with 2
 } while (n); // loop until n is not equal to 0

 // return a string 
 return (binary + ix); // but unable to understand this line
}

任何人都可以在此解释一下return (binary + ix);

发生的事情

2 个答案:

答案 0 :(得分:2)

ixchar数组的索引。该函数创建二进制字符串,从其最右边的位开始,靠近数组的末尾,并朝着数组的开头方向工作,一次创建一个位。

因此,当创建最后一位时,ix指向第一个最重要位的索引。它并不总是出现在数组的开头:特别是如果少于32位,它就不会出现。

"二进制+ ix"将索引添加到char缓冲区开头的第一位,计算指向第一位的指针。由于该函数返回std::string,因此它被提供给std::string的构造函数,该构造函数将指针指向文字字符串并隐式地从中构造一个完整的std::string对象。

答案 1 :(得分:1)

由于只有循环运行(根据n的大小而变化),ix才会递减,这将截断字符串,使其不包括其他所有前导零。

另请注意,您可以执行此操作:How to print (using cout) the way a number is stored in memory?