我需要处理一个二进制数。

我试着写:

const char x = 00010000;

但这并没有起作用。

我知道我可以使用与00010000值相同的十六进制数,但我想知道在c++中是否有用于二进制数的类型,如果没有,是否有其他解决方案?


当前回答

C语言没有用于纯二进制数的原生表示法。这里最好是八进制(例如07777)或十六进制(例如0xfff)。

其他回答

你可以尝试使用bool类型的数组:

bool i[8] = {0,0,1,1,0,1,0,1}

c++的过度工程思维已经在这里的其他答案中得到了很好的解释。以下是我尝试用C,保持简单的心态来做这件事:

unsigned char x = 0xF; // binary: 00001111

您可以使用的最小单位是字节(char类型)。您可以使用位操作符来处理位。

至于整数字面值,您只能使用十进制(以10为基数)、八进制(以8为基数)或十六进制(以16为基数)数字。在C和c++中没有二进制(以2为基数)字面值。

八进制数前缀为0,十六进制数前缀为0x。十进制数没有前缀。

在c++ 0x中,你可以通过用户定义的文字来做你想做的事情。

c++提供了一个名为std::bitset的标准模板。如果你喜欢,可以试试。

如果你正在使用GCC,那么你可以使用GCC扩展(包含在c++ 14标准中):

int x = 0b00010000;