以下函数旨在将其参数(整数)从十进制转换为八进制。
std::string dec_to_oct(int num) {
std::string output;
for(int i=10; i>=0; --i) {
output += std::to_string( (num >> i*3) & 0b111 );
}
return output;
}
它适用于任何正输入,但是,对于num = -1
它返回77777777777
,当它应返回37777777777
,因此第一个数字需要为3
而不是7
。 为什么会这样呢? 对于所有负输入,该功能似乎都不正确。 如何调整算法,使其对负数正确返回?
注意:这是CS作业,所以我很感谢提示/技巧。