二进制数据类型 C++

Rie*_*in. 0 c++ types

我想要一个数据类型来存储一个 21 位长的二进制数,我可以对其进行操作。我试过

unsigned long long int
Run Code Online (Sandbox Code Playgroud)

它只是很小很小。这浪费了很多空间,因为我的数字是二进制的,而计算机将它存储为一个整数,所以问题是有一种类型可以将它存储为二进制数,但我仍然可以对它进行模块化操作。

我阅读了一些相关的帖子,但认为它们并没有完全解决我的问题。如果有一个我错过了,我会很感激有人指点我,谢谢。

更新所以听到是问题的代码的片段

它在崩溃之后

unsigned long long int a;
cin>>a;
Run Code Online (Sandbox Code Playgroud)

哪些实习生必须去

void convertNumtoArray(unsigned long long int  a, x & binaryA){ 
        int j=0;                               
        while(a!=0){                          
                unsigned long long int remainder=a % 10;
                a=a/10;
                binaryA.a[j]=remainder;
                binaryA.length_a=j+1;
                j++;
        }
}
Run Code Online (Sandbox Code Playgroud)

Zie*_*ezi 5

我想要一个数据类型来存储一个 21 位长的二进制数,我可以对其进行操作。

解决此问题的一种方法是使用bitset,这是构造和使用此类对象的示例:

#include <iostream>       
#include <string>          
#include <bitset>          

int main ()
{
    std::bitset<16> foo;
    std::bitset<16> bar (0xfa2);
    std::bitset<16> baz (std::string("0101111001"));

    std::cout << "foo: " << foo << '\n';
    std::cout << "bar: " << bar << '\n';
    std::cout << "baz: " << baz << '\n';
}
Run Code Online (Sandbox Code Playgroud)

上面的打印:

foo: 0000000000000000
bar: 0000111110100010
baz: 0000000101111001
Run Code Online (Sandbox Code Playgroud)

这使您可以直接访问要定义的变量的大小(在您的情况下为 21 位?),以位为单位,以及二进制操作的可能性。