“蓝桥杯”基础知识(一)数制转换
“蓝桥杯”比赛的前几题往往会考查学生的基础知识,基础知识包含的内容有很多,下面选择几个重要知识点进行介绍。
1.计算机中数据的表示
计算机中的数据分为数值型数据和非数值型数据。
计算机中的数字、字母、符号等信息都必须转换成二进制数据保存在计算机中,这样才能被计算机识别。能够进行算术运算并得到明确数值概念的信息称为计算机数值型数据,其余如字符、文字、图像、声音等均为非数值型数据。
(1)数值型数据的表示
计算机中常用的进制有十进制、八进制、十六进制和二进制。
十进制以数字1~9开头,八进制以数字0开头,十六进制以0x(或0X)开头,二进制不能在C语言中直接书写,部分编译器支持以0b或0B开头的二进制数据表示。例如:
int a=12, b= 012,c= 0x12;
printf("%d %d %d\n",a,b,c); //C语言输出函数
或
cout<<a<<“,”<<b<<“,”<<c<<endl;//C++语言输出流对象
输出结果: 12 10 18 上述输出结果为十进制输出,要想数据以八进制或者十六进制的形式输出.则需要改变输出控制符,如:
printf("%d ,%o,% x\n",a,b,c); //十进制、八进制、十六进制输出
或
cout<<dec<<a<<”,”<<oct<<b<<”,”<<hex<<c<<endl; //C++输出格式
输出结果: 12 12 12
2.十进制向二进制转换
那么如何表示二进制数据呢?常用的方法是采用字符数组的方式,下面的例子实现了将一个十进制数转换成二进制数并存储在字符数组中。
#include <iostream>
using namespace std;
int main()
{
int n;
char ar[33];
cout<<"input n:";
cin>>n;
int i=0;
while(n) //除以2取余法
{
ar[i]=n%2+'0'; //数字转换成字符对应的ASCII值
i++;
n/=2; //修改n的值
}
i--;
while(i>=0)
{
cout<<ar[i];
i--;
}
cout<<endl;
return 0;
}
扩展——二进制格式输出
#include <iostream>
#include<bitset>
//bitset是C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码。
using namespace std;
int main()
{
bitset<8> bs1; //声明8位二进制数bs1,每一位都是0
cout << bs1 << endl;
bs1=255; //给二进制赋值为十进制数255
cout << bs1 << endl; //输出二进制数
bitset<8> bs2("10001000"); //声明8位二进制数bs2,并且赋初值10001000
cout << bs2 << endl; //输出二进制数bs2
cout << (bs1<<2) << endl; //将bs2左移2位
return 0;
}
本次练习:
1.写程序,将十进制数n,转换成r进制,r的值是2,8,16。(下一篇文章给答案)
【测试用例1】
Input n:20
Input r:8
output:24
【测试用例2】
Input n:30
Input r:16
output:1E
【测试用例3】
Input n:30
Input r:2
output:11110

添加 家长论坛微信

全部 0条评论