余数反着读

10 分钟

除 2 取余得到的一串余数,别顺着读,要「从下往上、反着读」才是正确的二进制。就像盖楼,先盖的是最底层(最低位),最后盖的才是顶层(最高位)。6 的余数依次是 0、1、1,反过来读就是 110,所以 6 的二进制是 110。

#include <iostream>
#include <string>
using namespace std;
int main(){
    int n = 6;
    string s = "";
    while(n > 0){
        s = char('0' + n%2) + s;   // 新余数放最前,等于反着读
        n /= 2;
    }
    cout << s;   // 输出 110
    return 0;
}

易错点:顺着读余数是错的。6 顺读成 011 就完全不对了,一定要反过来读成 110。

小纸条

5 的余数依次是 1、0、1,反着读,5 的二进制是多少?

登录 后可看答案

余数反着读 · C++ 入门 · op599 课程