在char C++中显示每个位

Dav*_*log -2 c++

我想在char中显示每个位.但这不起作用:

    char flags = byteFromFile();
    for( int i = 0; i < 8; i++ ){
        int tmp = ( flags >> i ) & 0x2;
        cout << tmp;
    }
    cout << endl;
Run Code Online (Sandbox Code Playgroud)

这段代码出了什么问题?

我只得到零,但字节的值为3(我用调试器查找).

lis*_*isu 6

如果你想显示位,你应该& 0x1而不是& 0x2- 毕竟,你的结果应该是零或一.

  • @Davlog:我不知道你在哪里阅读,但这显然是错的,或者你误解了它. (3认同)
  • @Davlog 0x1是第一个,0x2是第二个,0x3是第一个和第二个在一起. (2认同)
  • @Davlog,您需要做的就是将这些数字转换为二进制数,然后您将看到它们匹配的位数. (2认同)