我需要处理一个二进制数。
我试着写:
const char x = 00010000;
但这并没有起作用。
我知道我可以使用与00010000值相同的十六进制数,但我想知道在c++中是否有用于二进制数的类型,如果没有,是否有其他解决方案?
我需要处理一个二进制数。
我试着写:
const char x = 00010000;
但这并没有起作用。
我知道我可以使用与00010000值相同的十六进制数,但我想知道在c++中是否有用于二进制数的类型,如果没有,是否有其他解决方案?
当前回答
从c++ 14开始,你可以使用二进制字面值,现在它们是语言的一部分:
unsigned char a = 0b00110011;
其他回答
下面是我的函数没有添加Boost库:
用法:BOOST_BINARY(00010001);
int BOOST_BINARY(int a){
int b = 0;
for (int i = 0;i < 8;i++){
b += a % 10 << i;
a = a / 10;
}
return b;
}
你可以尝试使用bool类型的数组:
bool i[8] = {0,0,1,1,0,1,0,1}
C语言没有用于纯二进制数的原生表示法。这里最好是八进制(例如07777)或十六进制(例如0xfff)。
二进制常数将在C23中标准化。在撰写本文时,最新的C2x标准草案的6.4.4.1/4中提到了拟议的符号:
[…二进制常数由前缀0b或0b后跟一组数字0或1组成。
您可以使用的最小单位是字节(char类型)。您可以使用位操作符来处理位。
至于整数字面值,您只能使用十进制(以10为基数)、八进制(以8为基数)或十六进制(以16为基数)数字。在C和c++中没有二进制(以2为基数)字面值。
八进制数前缀为0,十六进制数前缀为0x。十进制数没有前缀。
在c++ 0x中,你可以通过用户定义的文字来做你想做的事情。