C++其他进制转十进制
C++其他進制轉十進制
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年04月15日 在學習C++基礎過程中,接觸到進制轉換,個人想要嘗試一下用C++來寫一個進制轉換,這篇文章主要內容是其他進制轉十進制,現在的進制有十六進制、十進制、八進制、二進制。
我們先來看代碼:
#include
using namespace std;
void main() {
char NUM[50];
int JZ ;
int v10 = 0;
int y = 0;
cout << “請輸入要轉為十進制的數:”;
cin >> NUM;
cout << “請輸入該數的進制:”;
cin >> JZ;
for (int i = strlen(NUM) - 1; i >= 0; i–) {
if (JZ == 16) {
char x = NUM[i];
int e = 0;
if (x == ‘A’ || x == ‘a’) {
e = 10;
}
else
if (x == ‘B’ || x == ‘b’) {
e = 11;
}
else
if (x == ‘C’ || x == ‘c’) {
e = 12;
}
else
if (x == ‘D’ || x == ‘d’) {
e = 13;
}
else
if (x == ‘E’ || x == ‘e’) {
e = 14;
}
else
if (x == ‘F’ || x == ‘f’) {
e = 15;
}
else
{
e = NUM[i] - ‘0’;
}
v10 = v10 + e*pow(JZ, y);
}
else {
int x = NUM[i] - ‘0’;
v10 = v10 + x * pow(JZ, y);
}
y++;
}
cout << “轉換成功!值為:” << v10 << endl;
}
代碼詳解:
代碼首先聲明了4個變量,分別是char NUM[50];、int JZ ;、int v10 = 0;、int y = 0;,然后我們先后輸入了NUM和JZ,NUM是一個其他進制的數,JZ代表了該數是什么進制的,然后我們先了解一下其他進制轉十進制的公式,若一個數為101且為二進制時它的十進制等于(122+0*21+120)=5,其中2的某一個次方的這個2取決于它是什么進制,若上面那個數是八進制那么它等于(1*82+0*81+1*80)=65,次方隨著位數增長,那么下面for循環的初始表達式是int i = strlen(NUM) - 1;,strlen()這個函數是獲取長度的意思,獲取NUM的長度減一的原因是,是因為i要做為索引值來使用,邏輯表達式是i >= 0;,當i<0的時候,我們已經把NUM的每一位數遍歷完了,那么for循環的后置表達式為i–;,上面有其他進制轉成十進制的公式,那么把它寫成代碼就是v10 = v10 + x * pow(JZ, y);那么v10是我們要輸出的結果,x是NUM[i]-‘0’;i上面說過是索引,表示當前是NUM的第幾位數-‘0’呢是因為C++的char機制問題,x為NUM中某一位數,pow(JZ, y),JZ不用說,pow是次方函數,y是多少次方的意思,v10則上一位數算出了的和。十六進制的話只是多了一個判斷,判斷其為A、B、C、D、E、F中的那一位就行了。
下面呢是一些運行的結果:
總結
以上是生活随笔為你收集整理的C++其他进制转十进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方法论:写好一份产品需求的系统化思考模型
- 下一篇: 产品经理怎么做可行性分析?