打印数字的二进制表示

Use*_*124 4 c++ bits

以下代码打印数字的二进制表示有什么问题?

int a = 65;
for (int i = 0; i < 8; i++) {
    cout << ((a >> i) & 1);
}
Run Code Online (Sandbox Code Playgroud)

Zon*_*ong 7

您从数字中最不重要的位开始并首先打印它.但是,无论您首先打印的是典型二进制表示中最重要的数字.

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)