全國青少年軟體編程等級考試是由中國電子學會發起的面向青少年機器人軟體編程能力水平的社會化評價項目。
考試標準汲取國內外高校的人才選拔標準,支持創客教育的實踐與工程化理念,全面考察青少年在軟體編程的知識能力和實踐能力,是青少年邁向人工智慧應用領域的基礎準備。
計算機中數制的基本概念
數制的三個基本概念
數制:記數的方法,指用一組固定的符號和統一的規則來表示數值的方法,如在計數的過程中採用進位的方法則稱為進位計數制。進位計數制有數位、基數、位權3個要素。
數位:
指數字符號在一個數中所處的位置。
基數:
指在某種進位計數制中數位上所能使用的數字符號的個數,例如,十進位數的基數是10,八進位的基數是8,二進位的基數是2。
不同的數制,可以給數字加上括號,使用下標來表示該數字的數制(當沒有下標時默認為十進位)。
C/C++中整數有三種表示形式:
1)十進位形式。如99、-1。
2)八進位形式。以數字0打頭,由0-7構成,如012,表示八進位整數12,即12(8)。
3)十六進位形式。以0x打頭,如0x12A,表示十六進位整數12A,即12A(16)。
在數制中,還有一個規則,這就是,N進位必須是逢N進一。
計算機中常用的數制是十進位。二進位與十進位類似,但是其基數是2,只有兩個數字0和1,每超過2時就需要進位。
1.
十進位數的特點是逢十進一。如下圖所示:
2.
二進位數的特點是逢二進一。如下圖所示:
3.
八進位數的特點是逢八進一。如下圖所示:
4.
十六進位數的特點是逢十六進一。如下圖所示:
二進位與十進位之間的轉換
1. 十進位轉二進位
方法為:十進位數除2取餘法,即十進位數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。
(具體用法如下圖)
2. 2
二進位轉十進位
方法為:把二進位數按權展開、相加即得十進位數。
(具體用法如下圖)
二進位與十六進位之間的轉換
1. 二進位轉十六進位
方法為:與二進位轉八進位方法近似,八進位是取三合一,十六進位是取四合一。(注意事項,4位二進位轉成十六進位是從右到左開始轉換,不足時補0)。
(具體用法如下圖)
2. 2
十六進位轉二進位
方法為:十六進位數通過除2取餘法,得到二進位數,對每個十六進位為4個二進位,不足時在最左邊補零。
(具體用法如下圖)
2進位轉10進位程序
#include<iostream>
using namespace std;
//2進位轉10進位,形參為長整型
long long btod(long long s)
{
longlong m=1,n=0;
while(s)
{
n=n+m*(s%10);
m=m*2;
s/=10;
}
return n;
}
//2進位轉10進位,形參為字符串
long long btod2(string s)
{
long long m=1,n=0;
int l=s.size();
for(int i=0;i<l;i++)
{
n=n+m*(s[l-1-i]-'0');
m=m*2;
}
return n;
}
//測試程序
int main()
{
long long s,m=1,n=0;
string s2;
cin>>s;
cin>>s2;
cout<<btod(s);
cout<<btod2(s2);
return 0;
}
//p(p<=16)進位數s轉換十進位數
#include<iostream>
using namespace std;
int main()
{
int ans=0,p;
string s;
cin>>p>>s;
for (int i=0;i<s.size();i++)
{
ans=ans*p;
if (s[i]=='A'||s[i]=='B'||s[i]=='C'||s[i]=='D'||s[i]=='E'||s[i]=='F')
{
ans=ans+(s[i]-'A'+10);
}
else
{
ans=ans+(s[i]-'0');
}
}
cout<<p<<"進位數"<<s<<"的10進位數為:"<<ans;
return 0;
}
//十進位數n轉換成p(p<=16)進位數
#include<iostream>
using namespace std;
int main()
{
int y=0,k,n,p;
string s;
cin>>n>>p;
cout<<"10進位數"<<n<<"的"<<p<<"進位數為:";
while (n!=0)
{
k=n%p;
if(k>9)
s+=char('A'+k-10);
else
s+=char(k+'0');
n=n/p;
}
for (int i=s.size()-1;i>=0;i--)
cout<<s[i];
return 0;
}
編程技術和學習等問題請聯繫下方老師諮詢