以下代码打印数字的二进制表示有什么问题?
int a = 65;
for (int i = 0; i < 8; i++) {
cout << ((a >> i) & 1);
}
Run Code Online (Sandbox Code Playgroud)
您从数字中最不重要的位开始并首先打印它.但是,无论您首先打印的是典型二进制表示中最重要的数字.
65 01000001这是你的循环迭代的方式
01000001
^ Output: 1
01000001
^ Output: 10
01000001
^ Output: 100
...
01000001
^ Output: 10000010
Run Code Online (Sandbox Code Playgroud)
因此打印输出相反.最简单的解决方法是更改循环的顺序.
for (int i = 7; i >= 0; i--) {
cout << ((a >> i) & 1);
}
Run Code Online (Sandbox Code Playgroud)