NOIP初賽篇 06數制轉換

2022-07-09 04:24:23 字數 2842 閱讀 2183

​ 將數字符號按順序排列成數字,並遵照某種由低到高的進製方式計數表示數值的方法,稱作為計數制。

十進位制計數制由0、1、2、3、4、5、6、7、8、9共10個數字符號組成。相同數字符號在不同的位數上表示不同的數值,每個數字計滿十就向高位進一,即「逢十進一」。

八進位制計數制由0、1、2、3、4、5、6、7共8個數字符號組成。相同數字符號在不同的數字上表示不同的數值,每個數字計滿八位就像高位進一,即「逢八進一」。

二進位制計數制由0和1共兩個數字符號組成。相同數字符號在不同的數字上表示不同的數值,每個數字計滿二就向高位進一,即「逢二進一」。

​ 在日常生活和工作中還會使用其他進製數。如:十二進位制數、十六進製制數、百進製數和千進製數等。無論哪種進製數,表示的方法都是類似的。如:十六進製制數由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f共16個符號組成,「逢十六進一」。不同的是,用a、b、c、d、e和f分別表示10、11、12、13、14和15六個數字符號。

​ 某進製計數制允許選用的基本數字符號的個數稱為計數。一般而言,j進製數的計數為j,可供選用的基本數字符號有j個,分別是0到j-1,每個數字計滿j就向高位進一,即「逢j進一」。

​ 某進製計數制中各位數字符號所表示的數值表示該數字符號值乘以乙個與數字符號所處位置有關的常數,該常數稱為「位權」(簡稱「權」)。位權的大小是以計數為底、數字符號所處的位置的序號為指數的整數次冪。

​ 十進位制數允許使用是個基本數字符號,所以基數為10,每位數字符號代表的位數的大小是以10為底,數字符號所處位置的序號為指數的整數次冪。

​ 十進位制的百位、十位、個位和十分位的權分別為102,101,100,10-1。故(555.5)10 可表示成(555.5)10=5 * 10^2+5 * 10^1+5 * 10^0+5 * 10-1。j進製數相鄰兩位數相差j倍,若小數點向左移n位,則整個數值就縮小jn。反之,小數點向右移n位,數值就放大j^n。

​ 計算機內部使用的數字符號只有「0」和「1」兩個。也就是說,計算機內部使用的是二進位制數,所有的數值資料和非數值資料,都是由「0」和「1」這兩個數字符號加以組合而成的,我們稱之為「二進位制**」。

​ 計算機只用二進位制的兩個數碼「0」和「1」來實現算數和邏輯運算,而人們仍然用十進位制的形式向計算機中輸入原始資料,並讓計算機也用十進位制形式顯示和列印運算結果。所以,必須有一種自動轉換方法,即讓資料輸入計算機後,將十進位制轉換成對應的二進位制數,並在處理完畢後,再自動將二進位制結果轉換位十進位制數。

​ 為了表達方便起見,常在數字後加一縮寫字母字尾作為不同進製的標識。各種進製數的字尾字母分別為:

​ b:二進位制數 o:八進位制數

​ d:十進位制數 h:十六進製制數

​ 對於十進位制數,通常不加字尾,也即十進位制數後的字母d可省略。

​ 整數轉二進位制整數轉二進位制是最常見的。核心在於除2取餘,倒序排列,高位補零。

不斷地將數字除以2,將餘數寫一邊,直到商為0時停止。下方的為二進位制的高位,由高位到低位倒序排列餘數,高位不夠用0來代替。

​ 先是將對應的正整數轉換成二進位制後,對二進位製取反然後再加1。以-10為例。10的二進位制表達是(00001010)b,由於高位都是0,所以可以省略,寫成(1010)b ,(用b來表示表達的是二進位制)。

先取反。取反的意思就是1變成0,0變成1。(00001010)b=>(11110101)b

加上1。由於是二進位制,所以我們逢二進一。(11110101)b =>(11110110)b。由於小數的高位都是1,所以我們也可以將高位省去,只保留(0110)b。不過注意和正整數進行區別。

將小數部分乘以2,取整數(這個整數不是0就是1),當乘以二后小數部分結果為0或者位數夠了,這些整數就是二進位制。

以0.125為例

0.125 * 2 =0.25 整數部分為 0

0.25 * 2 = 0.5 整數部分為 0

0.5 * 2 = 1.0 整數部分為1,小數部分為0,停止。

二進位制就為0.001

如果是帶整數部分的小數進行進製轉換,那麼分開來處理,先將整數部分,轉換成二進位制,再將小數部分,轉為二進位制。

注意小數進行二進位制轉換是存在無法除盡的情況的,這是正常的。根據題意保留足夠的位數即可。

使用按權相加法。

高位為0

首先第一步將位數補齊,如果高位是0則是乙個正數。將其分離位數,將分離出來的位數按從低位到高位的順序,依次和2的冥相乘累加。以(1010)b為例。

分離位數: 1 0 1 0 => 相乘累加

\[0\times2^0+1\times2^1+0\times2^2+1\times2^3=10

\]高位為1

如果高位為1,則說明是乙個負數,那就先減1,再進行取反,在進行轉換。以(11110110)b為例:

減一:(11110101)b => 取反: (00001010)b=>按權相加:

\[0\times 2^0+1\times2^1+0\times2^2+1\times2^3=10

\]小數形式

\[0\times2^+0\times2^+1\times2^=0.125

\]整體上的方法和十進位制與二進位制的轉換方法類似。轉換成x進製的話使用除x取餘,倒序排列,高位補零。二進位制轉換成其他進製還是採用按權相加的方法。

八進位制與十六進製制

八進位制是逢八進一。十進位制轉八進位制的話,過程就是不斷地將數字除以8,將餘數寫一邊,直到商為0時停止。下方的為二進位制的高位,由高位到低位倒序排列餘數,高位不夠用0來代替。以十進位制10轉換為八進位制例。

十六進製制也是類似,需要注意的點是,十六進製制的10 ~ 15是使用a ~ f來表示的。

NOIP初賽知識

目錄 覺得有用就頂起來 與 或 非 同或和異或是邏輯運算的符號,在noip初賽知識中很常見 符號表示 與 或 非 同或 異或 都是些奇怪的符號 定義 1為真,0為假 與運算 0 0 0 0 1 0 1 0 0 1 1 1 即所有引數都為真,才返回真 或運算 0 0 0 0 1 1 1 0 1 1 1...

noip初賽錯題積累

3 關於拓撲排序,下列說法正確的是 d a.所有連通的有向圖都可以實現拓撲排序 b.對同乙個圖而言,拓撲排序的結果是唯一的 c.拓撲排序中入度為0的結點總會排在入度大於0的結點前面 d.拓撲排序結果序列中的第乙個結點一定是入度為0的點 4 如果一棵二叉樹的中序遍歷是bac,那麼他的先序遍歷不可能是 ...

NOIP2016初賽總結

第一篇部落格。明明老早就註冊了,但一直都懶得寫 話說這裡提供的的為什麼是qq表情,還想加個滑稽來著 咳咳,這都高二了。再不留點東西感覺說不過去。感覺現在寫這個有點早,畢竟還不知道成績。沒有核對多少答案。薛丁格的分數 理論告訴我們在真正發布成績之前,我的分數既是零分也是滿分。所以我現在不敢立flag。...