C++中定义枚举变量只有两个值,指定位域不可以是一个二进制位吗?

定义了一个枚举变量,
enum hyperthread {Support,Unsupport};
只有支持和不支持两种值,按照枚举元素的默认值,应该分别是0和1,但是在类中指定位域大小时,给一个二进制位是错误的,运行中只能输出Support的结果,Unsupport是不正确的,想知道为什么至少要给两个二进制位,是还有存储的其他信息吗?求解
【word_lenth也一样,cores_number三个也需要给三位二进制,给两位不能表示第三个变量,代码是教材课后题,定义的一个CPU的类。】
代码:

#include<iostream>
using namespace std;

enum word_lenth{_32,_64};
enum cores_number{One,Two,Four};
enum hyperthread {Support,Unsupport};

class My_cpu{
public:
    My_cpu(unsigned Number,word_lenth Word,cores_number Core,hyperthread Hyperthread):
        Number(Number),Word(Word),Core(Core),Hyperthread(Hyperthread){}
    ~My_cpu(){}
    void Cpu_Show();
private:
    unsigned Number : 12;
    word_lenth Word : 2; //此处改1是不正确的,为什么?
    cores_number Core : 3;//此处改2是不正确的,为什么?
    hyperthread Hyperthread : 2;//此处改1是不正确的,为什么?

};

void My_cpu::Cpu_Show(){
    cout<<"时钟频率:"<<Number<<endl;
    switch (Word)
    {
    case _32:
        cout<<"字长:32"<<endl;
        break;
    case _64:
        cout<<"字长:64"<<endl;
        break;
    }
    switch (Core)
    {
    case One:
        cout<<"核心数:单核"<<endl;
        break;
    case Two:
        cout<<"核心数:双核"<<endl;
        break;
    case Four:
        cout<<"核心数:四核"<<endl;
        break;
    }
    switch (Hyperthread)
    {
    case Support:
        cout<<"是否支持超线程:是"<<endl;
        break;
    case Unsupport:
        cout<<"是否支持超线程:否"<<endl;
        break;
    default:
        break;
    }
}



void main(){
    My_cpu Inter_7(2999,_64,Four,Unsupport);
    cout<<"sizeof(cpu):"<<sizeof(Inter_7)<<endl<<endl;;
    Inter_7.Cpu_Show();
    cout<<endl;
}

截图:
CPU字长改为了32位,两种都能正确输出。
这是位域定义多一位的情况:
img
这是恰好满足定义的情况:
img