一、输出十进制、十六进制、八进制数:
dec: 指示cout以十进制输出。 December
hex: 指示cout以十六进制输出。 Hexadecimal
oct: 指示cout以八进制输出。 October
#include<iostream>
using namespace std;
int main(){
int n_max = 42;
cout<<n_max<<endl; //十进制输出
cout<<hex<<n_max<<endl; //十六进制输出
cout<<oct<<n_max<<endl; //八进制输出
return 0;
}
二、输出二进制数:
①、#include<bitset>
②、const int num = 32;//num表示bitset声明的位数,即有多少位输出。
③、cout<<(bitset<num>)input<<endl; //格式:(bitset<num>)input
#include<iostream>
#include<bitset>
using namespace std;
const int num = 32;//num表示bitset声明的位数,即有多少位输出。
int main(){
int input = 42;
cout<<(bitset<num>)input<<endl; //格式:(bitset<num>)input
return 0;
}
三、逐个输入十进制数,逐个输出对应二进制数及十六进制数:
#include<iostream>
#include<bitset>
using namespace std;
const int num=32;
int main(){
std::ios_base::sync_with_stdio(false); //这行代码,加速cin、cout
int input;
while(cin>>input){
cout<<(bitset<num>)input<<endl; //二进制
cout<<hex<<input<<endl; //十六进制
}
return 0;
}
四、ctrl+z作为cin结束的问题:
①、Ctrl+z并不会产生一个普通的ASCII码值,也就是说它不会产生一个字符,不会被放到输入缓冲区中,所以读不到它,你输入了就好像木有输入一样,它只能作为结束循环来用。
②、还有在Windows系统中,只有按下回车才会去检测之前有没有按下Ctrl+z,才会去检测流是否结束。就是在按下回车之前,输入缓冲区并不能检测到是否有Ctrl+z按下,所以即使按了Ctrl+z,照样还可以从键盘去输入内容,但是Ctrl+z这行输入的内容到时候并不会被读取到,因为在缓冲区检测时,如果检测到Ctrl+z(结束标志),就会认为输入流结束了,那么后边的内容就不会被读进去,而被丢掉。
五、验证结果:
二进制中,从右起某一位的权值 = 2^(其前面的数位数量)。
六、while(cin>>x)与 scanf(“%d”,&x)!=EOF:
注: cin速度慢,测试数据太多可能会超时的。
注:有的时候,用scanf(“%lld”)来读写long long可能会出错。
要用cin读,可以在int main()中开头加std::ios_base::sync_with_stdio(false) 来加速cin。