C++/C语言中二进制、八进制、十进制以及十六进制的表示方法

C++/C语言本身支持的三种输入是:
1. 十进制。如23,456;
2. 十六进制,以0x开头。比如0x7a。输出十六进制hex关键字格式化,如cout<<hex<<12。
3. 八进制,以0开头。比如08,9012。输出八进制用oct关键字格式化,如cout<<oct<<12。

如下示例程序:

#include<iostream>
using namespace std;
void main()
{
 int a,b,c;
 a=10; //十进制
 b=010;//八进制
 c=0x10; //十六进制
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
 cout<<"c="<<c<<endl;
 cout<<"a(八进制)="<<oct<<a<<endl;
 cout<<"a(十六进制)="<<hex<<a<<endl;
}

输出结果为:
a=10
b=8
c=16
a(八进制)=12
a(十六进制)=a

c/c++中二进制是不直接支持的。
要想输入二进制,可以用bitset<size_t N>进行转换输出。如下示例程序:

#include<bitset>
#include<iostream>
int main()
{
 int c=-1;
 std::bitset<sizeof(int)*8> a(c);
 std::cout<<a<<"n";
 return 0;
}

或者如果是string类型字符串的话,可以使用 Convert.ToInt32("01010101", 2)。

bitset的函数用法:

点赞 (3)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code