将十进制转换为二进制的方法:
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);
答案 0 :(得分:2)
ix
是char
数组的索引。该函数创建二进制字符串,从其最右边的位开始,靠近数组的末尾,并朝着数组的开头方向工作,一次创建一个位。
因此,当创建最后一位时,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?