我們可以用這樣的方式來表示乙個十進位制數: 將每個阿拉伯數字乘以乙個以該數字所處位置的(值減1)為指數,以10為底數的冪之和的形式。例如:123可表示為 1*10^2+2*10^1+3*10^0這樣的形式。
與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的(值-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)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:
28000=19180(base-16)
輸入樣例#4:
-25000 -16
這一題不是很難,110001=1*(-2)5+1*(-2)4+0*(-2)3+0*(-2)2+0*(-2)1 +1*(-2)0和-r∈公式,會讓我們很容易做出這道題。
程式如下
varn,r,i,m:longint;
s,ss:string;
begin
ss:='0123456789abcdefghijklmnopqrstuvwxyz';
readln(n,r);
m:=n;
s:='';
repeat
i:=m mod r; m:=m div r;
if i<0 then begin i:=i-r; m:=m+1; end; s:=ss[i+1]+s;
until m=0;
writeln(n,'=',s,'(base',r,')');
end.
pascal 人民幣大寫轉換
我們在程式設計的過程中,特別是開發和財務相關的應用程式的時候,幾乎都會遇到要將阿拉伯數字 一般是貨幣金額 轉換為中文大寫的要求。也有一些轉換程式,但大都不符合財務實際要求,比如最簡單的 function xd xx currency string var dx,ws string i,cd inte...
進製轉換(任意進製轉換)
a進製轉b進製 思想 a進製轉十進位制 十進位制轉b進製 a進製轉十進位制 include include includeusing namespace std const int p 16 p代表 a進製 int main cout 十進位制轉b進製 include includeusing na...
進製進製進製 轉換
從剛學計算機就對進製轉換有著莫名的反感,2進製 8進製 10進製 16進製制各種轉換。下面就說下邏輯位址轉換成實體地址的求法吧 首先,使用者輸入乙個16進製制的數字cin hex logic add hex的意思是告訴計算機輸入的數是以16進製制方式輸入的 這個時候你要是輸出cout cout 經過...