十進位制轉二進位制快速演算法

2021-05-04 12:54:21 字數 2681 閱讀 3315

1樓:

首先講一下「權重」的概念,數字中某位的權重:2的(該位所在的位數(從右至左)-1)次方,比如:100的權重為:

2^(1-1)=1 1的權重為:2^(2-1)=2,二進位制轉十進位制:數字中所有位*本位的權重然後求和。

比如將10101轉化為十進位制:10101=1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21

十進位制如何轉二進位制:將該數字不斷除以2直到商為零,然後將餘數由下至上依次寫出,即可得到該數字的二進位制表示,以將數字21轉化為二進位制為例。

2.當商為零時,將餘數由下至上依次寫出,即為21的二進位制表示。

拓展資料:

十進位制數轉換為二進位制數時,由於整數和小數的轉換方法不同,所以先將十進位制數的整數部分和小數部分分別轉換後,再加以合併。

而由二進位制數轉換成十進位制數是把二進位制數首先寫成加權係數式,然後按十進位制加法規則求和,這種做法稱為「按權相加」法。

2樓:匿名使用者

十進位制數轉換為二進位制數時,由於整數和小數的轉換方法不同,所以先將十進位制數的整數部分和小數部分分別轉換後,再加以合併。

而由二進位制數轉換成十進位制數是把二進位制數首先寫成加權係數式,然後按十進位制加法規則求和,這種做法稱為「按權相加」法。

十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法。

具體做法是:用2整除十進位制整數,可以得到乙個商和餘數;再用2去除商,又會得到乙個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。

以235為例,轉為二進位制:

235除以2得117,餘1

117除以2得58,餘1

58除以2得29,餘0

29除以2得14,餘1

14除以2得7,餘0

7除以2得3,餘1

3除以2得1,餘1

從得到的1開始寫起,餘數倒排,加在它後面,就可得11101011。

3樓:匿名使用者

學計算機的朋友剛開始學習時都要接觸進製之間的轉換,二進位制、十進位制、八進位制、十六進製制等,這個是很枯燥的,轉來轉去就轉矇圈了,別蒙別蒙,今天咱們乙個乙個搞定,看看二進位制和十進位制之間如何相互轉換的。

方法/步驟

轉成二進位制主要有以下幾種:正整數轉二進位制,負整數轉二進位制,小數轉二進位制;

1、 正整數轉成二進位制。要點一定一定要記住哈:除二取餘,然後倒序排列,高位補零。

也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就ok咧。哎呀,還是舉例說明吧,比如42轉換為二進位制,如圖1所示操作。

42除以2得到的餘數分別為010101,然後咱們倒著排一下,42所對應二進位制就是101010.如圖2所示更直觀的表達。

計算機內部表示數的位元組單位是定長的,如8位,16位,或32位。所以,位數不夠時,高位補零,所說,如圖3所示,42轉換成二進位制以後就是。00101010,也即規範的寫法為(42)10=(00101010)2.

趕緊記住吧。

2、 負整數轉換成二進位制

方法:先是將對應的正整數轉換成二進位制後,對二進位製取反,然後對結果再加一。還以42為例,負整數就是-42,如圖4所示為方法解釋。

最後即為:(-42)10=(11010110).

3、 小數轉換為二進位制的方法:對小數點以後的數乘以2,有乙個結果吧,取結果的整數部分(不是1就是0嘍),然後再用小數部分再乘以2,再取結果的整數部分……以此類推,直到小數部分為0或者位數已經夠了就ok了。然後把取的整數部分按先後次序排列就ok了,就構成了二進位制小數部分的序列,舉個例子吧,比如0.

125,如圖5所示。

如果小數的整數部分有大於0的整數時該如何轉換呢?如以上整數轉換成二進位制,小數轉換成二進位制,然後加在一起就ok了,如圖6所示。

4、 整數二進位制轉換為十進位制:首先將二進位制數補齊位數,首位如果是0就代表是正整數,如果首位是1則代表是負整數。

先看首位是0的正整數,補齊位數以後,將二進位制中的位數分別將下邊對應的值相乘,然後相加得到的就為十進位制,比如1010轉換為十進位制,方法如圖7所示。

5、若二進位制補足位數後首位為1時,就需要先取反再換算:例如,11101011,首位為1,那麼就先取反吧:-00010100,然後算一下10100對應的十進位制為20,所以對應的十進位制為-20,方法如圖8所示。

6、將有小數的二進位制轉換為十進位制時:例如0.1101轉換為十進位制的方法:將二進位制中的四位數分別於下邊(如圖9所示)對應的值相乘後相加得到的值即為換算後的十進位制。

注意事項

進製之間的轉換雖然繁瑣,但理解後也不難,但是需要經常溫習,然後才不會弄混淆。

4樓:

#include

#include

int main()

i=31;

while(!b[i])i--;

while(i>=0)printf("%d",b[i--]);

return 0;}

5樓:匿名使用者

將數字一直除以2,直至除到1 ,再將餘數和最後的1從下向上倒著寫就是結果

6樓:匿名使用者

(42)10=(00101010)2.趕緊記住吧。應該寫為(101010)2.

7樓:匿名使用者

你要的是把乙個10進製轉成2進製的方法,還是寫乙個程式,輸入乙個10進製數,輸出其2進製?

十進位制轉二進位制原理,十進位制轉二進位制的這方法的數學原理是什麼啊?求大神詳解!

用2輾轉相除至結果為1 將餘數和最後的1從下向上倒序寫 就是結果 例如302 302 2 151 餘0 151 2 75 餘1 75 2 37 餘1 37 2 18 餘1 18 2 9 餘0 9 2 4 餘1 4 2 2 餘0 2 2 1 餘0 故二進位制為100101110 二進位制轉十進位制 從...

1122db十進位制轉二進位制

樓上的回答錯誤 1.122 d b 十進位制轉二進位制 答案是111010十進位制轉二進位制是用的除以二倒序取餘的方法。十進位制轉二進位制 用2輾轉相除至結果為1 將餘數和最後的1從下向上倒序寫 就是結果 例如302 302 2 151 餘0 151 2 75 餘1 75 2 37 餘1 37 2 ...

二進位制小數怎麼轉換為十進位制,二進位制數如何轉換成十進位制數?

和整數一樣,從小數點後第一位開始算,第一位是1 2,第二位是1 4,然後是1 8,然後是1 16,以此類推,比如 二進位制1.011 1 0 1 2 1 1 4 1 1 8 1 0.25 0.125 十進位制1.375 用權啊 比如10.101的二進位制.對應十進位制為 1 2 1 0 2 0 1 ...