C++不支持直接使用二进制的数,只支持8,10,16三种进制的直接定义。
计算机保存数据就是2进制的,如chara=97;那么在计算机里面的信息就是01100001,用2进制打印就是01100001,用10进制打印就是97,因此只存在显示方式的不同。
C++中天然的支持除10进制之外的三种进制的表示:
1、二进制
例:intx=0b1001;//x=9
2、八进制
例:inty=074;//x=60
3、十六进制
例:intz=0xa3;//x=163;
扩展资料
C++补码及二进制输出
#include<iostream>
usingnamespacestd;
voidmain()
{
while(1)
{
intn;
cin>>n;//最好有边界检查
inth=1;
h=h<<31;//32位,最高位1,其它位是0
for(inti=1;i<=32;i++)
{
if((n&h)==0)
cout<<0;
elsecout<<1;
n=n<<1;//左移一位,右位补0
if(i%4==0)
cout<<"";
}
cout<<endl;
}
system("pause");
}
/*
43
00000000000000000000000000101011
-43
11111111111111111111111111010101
*/
2、但是,计算机保存数据就是2进制的,如char a = 97;那么在计算机里面的信息就是01100001,用2进制打印就是01100001,用10进制打印就是97,因此只存在显示方式的不同。c语言中对位操作有几种方式,&与操作,|或操作,^异或操作,~反操作,<<左移位操作,>>右移位操作。如果想取a的第i位是多少,表达式(a & (1 << i))为0表示第i位为0,非0表示第i位为1。
是用0b代表二进制描述。
0 八进制
0x十六进制
比如
0b10 就是2
030 是 24
30 是30
0x30 是 48
#include <iostream>
#include <bitset>
using namespace std;
void main()
{
int a;
cin>>a;
cout<<bitset<8>(a)<<endl;
}
如果输入8,得到的是:00001000.你可以通过控制<>中的数来调输出位数