進製轉換的那些事兒

2021-09-12 19:04:30 字數 1773 閱讀 7684

進製轉換是一種較為特殊的數字拆解

進製這事兒,說到底就是位值原理,即:同乙個數字,放在不同的數字上,代表不同大小的「量」。例如:十進位制中,百位上的1表示100,十位上的1表示10。

任何進製中,每個數都可以按位權展開成各個數字上的數字乘以對應數字的位權,再相加的形式,如:

十進位制的123=1×100+2×10+3×1

十進位制的9876=9×1000+8×100+7×10+6×1

問:為啥相應的數字是1000、100、10、1?為啥不是4、3、2、1?

答:十進位制,滿十進一,再滿十再進一,因此要想進到第三位,得有10×10;第4位得有10×10×10

這樣我們就知道了:

對10進製,從低位到高位,依次要乘以10^0,10^1,10^2,10^3……,也就是1、10、100、1000

對2進製,從低位到高位,依次要乘以2^0,2^1,2^2,2^3……,也就是1、2、4、8……

總之,n進製k轉換成m進製t,只需先將n進製k轉換成十進位制q,再將十進位制q轉換成m進製t

題目描述

求任意兩個不同進製非負整數的轉換(2進製~16進製制),所給整數在long所能表達的範圍之內。

不同進製的表示符號為(0,1,...,9,a,b,...,f)或者(0,1,...,9,a,b,...,f)。

輸入

輸入只有一行,包含三個整數a,n,b。a表示其後的n 是a進製整數,b表示欲將a進製整數n轉換成b進製整數。a,b是十進位制整數,2 =< a,b <= 16。
輸出

可能有多組測試資料,對於每組資料,輸出包含一行,該行有乙個整數為轉換後的b進製數。輸出時字母符號全部用大寫表示,即(0,1,...,9,a,b,...,f)。
樣例輸入

15 aab3 7
樣例輸出

210306
**塊

int main() 

else if (n[i] >= 'a' &&n[i] <= 'z')

else

res += x * pow(a, size1 - i - 1);

}char ans[40];

int size = 0;

while (res != 0)

else

res /= b;

}for (int i = size-1; i>=0 ; i--)

printf("\n");

}return 0;

}

總結

1.字元轉換,根據acsii碼,進行數字與字元之間的轉換。
if (n[i] >= '0' && n[i] <= '9') 

else if (n[i] >= 'a' &&n[i] <= 'z')

else

進製轉換的那些事兒

進製轉換是一種較為特殊的數字拆解 進製這事兒,說到底就是位值原理,即 同乙個數字,放在不同的數字上,代表不同大小的 量 例如 十進位制中,百位上的1表示100,十位上的1表示10。任何進製中,每個數都可以按位權展開成各個數字上的數字乘以對應數字的位權,再相加的形式,如 十進位制的123 1 100 ...

進製轉換的那些事兒

進製轉換是一種較為特殊的數字拆解 進製這事兒,說到底就是位值原理,即 同乙個數字,放在不同的數字上,代表不同大小的 量 例如 十進位制中,百位上的1表示100,十位上的1表示10。任何進製中,每個數都可以按位權展開成各個數字上的數字乘以對應數字的位權,再相加的形式,如 十進位制的123 1 100 ...

Java程式設計那些事兒7 進製的概念

1.2進製的概念 因為不可能為每個數值都創造乙個符號,所以需要用基本數字組合出復合的數值,這樣就有了進製的概念。其實所有進製都是人為的創造,都是用來計數方便的。現在最常用的進製是十進位制,當然其它的進製也在使用中。例如 半斤八兩 這個成語,就反映了古代一斤等於十六兩的概念,也就是十六進製制計數方式。...