基礎問題:進位制轉換
進位制轉換基礎問題
對一個P進位制的數要轉換成Q進位制,需要分為兩步:
1.將一個P進位制數x轉換為十進位制數y
2.將十進位制數轉換成Q進位制數
STEP1:
對一個十進位制數y=d1d2…dn,可以寫成:
y=d110n-1+d210n-2+…+dn-110+dn;
同樣的,如果P進位制數x為a1a2…an,那麼它寫成下面這個形式之後使用十進位制加法和乘法,就可以轉換為十進位制數y:
y=a1Pn-1+a2Pn-2+…+an-1P+an;
而這個公式可以很容易用迴圈進行實現:
int y=0;int product=0;
while(x!=0)
{
y+=(x%10)*product;
x=x/10;
product=product*P;//P為轉換前進位制
}
STEP2:將十進位制數轉化為Q進位制數z
採用“除基取餘法”。基:指將要轉換成的進位制Q,因此除基取餘的意思就是每次將待轉換數除以Q,然後將得到的餘數作為低位儲存,而商則繼續除以Q並進行上面的操作,最後當商==0時,將所有位從高到低輸出就可以得到z。
eg:將十進位制數11轉換為二進位制數:(D to B)
//十進位制轉二進位制
int z[40]=NULL;int count=0;
while(x!=0)
{
z[count]=x%2;
count++;
x=x/2;
}
for(int i=count-1;i>=0;i++)
{print(z[i]);}
練習題:PAT B1022 :D進位制的A+B
輸入兩個非負十進位制整數A和B(<=2^30-1^ )以及D(進位制數),輸出A+B的D(1<D<=10)
輸入格式:在一行中一次給出三個整數A、B和D;輸出D
非常的簡單。
#include<iostream>;
using namespace std;
int main()
{
int A, B; int D, sum;
int z[40]; int count = 0;
cout << "enter A,B,C" << endl;
cin >> A >> B >> D;
if (D > 10 || D <= 1)
{
cout << "error!illegal input" << endl;
return 0;
}
sum = A + B;
while (sum != 0)
{
z[count] = sum % D;
count++;
sum = sum / D;
}
for (int i = count - 1; i >= 0; i--)
{
cout << z[i];
}
return 1;
}
《演算法筆記》
相關文章
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 技術問 - 進位制轉換
- Qt進位制轉換(十進位制轉十六進位制)QT
- 進位制轉換
- 關於Java中進位制轉換以及位運算問題Java
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 洛谷題單指南-數學基礎問題-P1017 [NOIP2000 提高組] 進位制轉換
- Python處理十六進位制與二進位制轉換的問題——binascii自帶庫PythonASCII
- JavaScript 進位制轉換JavaScript
- 【python】進位制轉換Python
- 進位制的轉換
- 藍橋杯 基礎練習 十六進位制轉八進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- JavaScript十進位制轉換為二進位制JavaScript
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 進位制與二進位制及相關轉換
- 進位制轉換圖解圖解
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 資訊學奧賽初賽天天練-71-NOIP2016普及組-基礎題2-進位制轉換、二進位制轉八進位制、八進位制轉二進位制、二叉樹陣列儲存、定址空間二叉樹陣列
- 什麼是二進位制?二進位制如何轉換?
- [20190716]十進位制轉換其他進位制指令碼.txt指令碼
- 十進位制轉換任意進位制--鏈棧實現
- 計算機求解10進位制轉換任意進位制計算機
- JavaScript中的多種進位制與進位制轉換JavaScript
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- c++的進位制轉換C++
- 進位制轉換的工具類
- JavaScript 進位制轉換 All In OneJavaScript
- Python中各進位制轉換Python
- stoi字串轉十進位制數越界問題字串
- 口算 16 進位制轉換 10 進位制,但只適合兩位的 16 進位制
- Python 十進位制轉換為二進位制 高位補零Python
- oracle_16進位制與10進位制轉換小示例Oracle
- 計算機中進位制轉換計算機
- 資料轉換-16進位制字元字元