我們可以用這樣的方式來表示乙個十進位制數: 將每個阿拉伯數字乘以乙個以該數字所處位置的(值減1)為指數,以10為底數的冪之和的形式。例如:123可表示為 1×102+2×101+3×1001\times 10^2+2\times 10^1+3\times 10^01×
102+
2×10
1+3×
100 這樣的形式。
與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的(值-1)為指數,以2為底數的冪之和的形式。一般說來,任何乙個正整數r或乙個負整數-r都可以被選來作為乙個數制系統的基數。如果是以r或-r為基數,則需要用到的數碼為 0,1,....r-1。例如,當r=7時,所需用到的數碼是0,1,2,3,4,5和6,這與其是r或-r無關。如果作為基數的數絕對值超過10,則為了表示這些數碼,通常使用英文本母來表示那些大於9的數碼。例如對16進製制數來說,用a表示10,用b表示11,用c表示12,用d表示13,用e表示14,用f表示15。
在負進製數中是用-r 作為基數,例如-15(十進位制)相當於110001(-2進製),並且它可以被表示為2的冪級數的和數:
110001=1×(−2)5+1×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+1×(−2)0110001=1\times (-2)^5+1\times (-2)^4+0\times (-2)^3+0\times (-2)^2+0\times (-2)^1 +1\times (-2)^011
0001
=1×(
−2)5
+1×(
−2)4
+0×(
−2)3
+0×(
−2)2
+0×(
−2)1
+1×(
−2)0
設計乙個程式,讀入乙個十進位制數和乙個負進製數的基數, 並將此十進位制數轉換為此負進製下的數:-r∈
輸入格式:
輸入的每行有兩個輸入資料。
第乙個是十進位制數n(-32768<=n<=32767); 第二個是負進製數的基數-r。
輸出格式:
結果顯示在螢幕上,相對於輸入,應輸出此負進製數及其基數,若此基數超過10,則參照16進製的方式處理。
輸入樣例#1:複製
30000 -2
輸出樣例#1:複製
30000=11011010101110000(base-2)
輸入樣例#2:複製
-20000 -2
輸出樣例#2:複製
-20000=1111011000100000(base-2)
輸入樣例#3:複製
28800 -16
輸出樣例#3:複製
28800=19180(base-16)
輸入樣例#4:複製
-25000 -16
輸出樣例#4:複製
-25000=7fb8(base-16)
這道題和平常的二進位制轉換區別就在於,當出現餘數為負數時,需要「-=」被除數,且商+1,具體看**(可能會好理解些
#include
using namespace std;
stackqq;
void q(int n,int m)
if(t>9)
else
qq.push(char(t+'0')); }
}int main()
P1017 進製轉換
題目描述 我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 10 2 2 10 1 3 10 0這樣的形式...
P1017 進製轉換
我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 102 2 101 3 100這樣的形式。與之相似的,對...
P1017 進製轉換
我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 102 2 101 3 100這樣的形式。與之相似的,對...