字符C++的位表示

Luc*_*nik 1 c++ bit-manipulation bit

这是我的字符位表示程序.但我不知道它是否表明我是对还是错呢?有可疑单位(红色).

在此输入图像描述

你能解释一下这是什么(如果它是对的)或我的代码有什么问题,如果这些单位不应该.谢谢

#include "stdafx.h"
#include "iostream"
using namespace std;

struct byte {
   unsigned int a:1;
   unsigned int b:1;
   unsigned int c:1;
   unsigned int d:1;
   unsigned int e:1;
   unsigned int f:1;
   unsigned int g:1;                   
   unsigned int h:1;
};

union SYMBOL {                              
    char letter;                    
    struct byte bitfields;
};

int main() {                                                              
    union SYMBOL ch; 
    cout << "Enter your char: ";
    while(true) { 

        ch.letter = getchar();
        if(ch.letter == '\n')  break; 

        cout << "You typed: " << ch.letter << endl;
        cout << "Bite form = ";
        cout << ch.bitfields.h;
        cout << ch.bitfields.g;
        cout << ch.bitfields.f;
        cout << ch.bitfields.e;
        cout << ch.bitfields.d;
        cout << ch.bitfields.c;
        cout << ch.bitfields.b;
        cout << ch.bitfields.a;
        cout << endl << endl;

    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*oun 5

请参阅ASCII表以了解您获得的输出:

在此输入图像描述

  • a 的十进制值为97,并且97为二进制的01100001
  • b 小数值为98,97为二进制的01100010

等等.