C++输入十进制数,输出对应二进制数、十六进制数

一、输出十进制、十六进制、八进制数:

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(结束标志),就会认为输入流结束了,那么后边的内容就不会被读进去,而被丢掉。

五、验证结果:

《C++输入十进制数,输出对应二进制数、十六进制数》

 

二进制中,从右起某一位的权值 = 2^(其前面的数位数量)。 

 

六、while(cin>>x)与 scanf(“%d”,&x)!=EOF:

注: cin速度慢,测试数据太多可能会超时的。

注:有的时候,用scanf(“%lld”)来读写long long可能会出错。

       要用cin读,可以在int main()中开头加std::ios_base::sync_with_stdio(false) 来加速cin。

    原文作者:Estrellas_
    原文地址: https://blog.csdn.net/OpenStack_/article/details/88143159
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞