二進位制轉十進位制演算法,十進位制轉二進位制演算法

時間 2021-10-14 23:56:55

1樓:匿名使用者

我們在網路上經常遇到要ip轉為二進位制來劃分或彙總子網,所以要找一種最快速的十進位制轉二進位制的方法!

這種演算法用除16來算,基於我們對16以內的二進位制很熟悉!朋友你也許也奇怪,除16不是算16進製制轉換的嗎?

呵呵,下面看來我說.(我們用d表示10進製,用b表示2進製)公式是a(d)÷16=b 餘c. 然後用b&c=d(b)(什麼,看不懂?公式自己創的,看不懂也不怪我舉例)

如我們算175(d)的二進位制!

175÷16=10 餘 15

10的二進位制是1010

15的二進位制是1111

所以10&15=10101111(b)

也就是10是2進製的前4位,15是2進製的後4位!

所以175(d)=10101111(b)

呵呵,學會了嗎,是不是很快速!

2樓:買臨

從最後一位開始算,依次列為第0、1、2...位第n位的數(0或1)乘以2的n次方

得到的結果相加就是答案

例如:01101011.轉十進位制:

第0位:1乘2的0次方=1

1乘2的1次方=2

0乘2的2次方=0

1乘2的3次方=8

0乘2的4次方=0

1乘2的5次方=32

1乘2的6次方=64

0乘2的7次方=0

然後:1+2+0

+8+0+32+64+0=107.

二進位制01101011=十進位制107.

3樓:雪映星光

二進位制數第0位的權值是2的0次方,第1位的權值是2的1次方……所以,設有乙個二進位制數:0110 0100,轉換為10進製為:

下面是豎式:

0110 0100 換算成 十進位制

第0位 0 * 20 = 0

第1位 0 * 21 = 0

第2位 1 * 22 = 4

第3位 0 * 23 = 0

第4位 0 * 24 = 0

第5位 1 * 25 = 32

第6位 1 * 26 = 64

第7位 0 * 27 = 0 +---------------------------100

用橫式計算為:

0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100

0乘以多少都是0,所以我們也可以直接跳過值為0的位:

1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 100

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

4樓:向前看

如果要將十進位制數轉換為二進位制數,則應將十進位制數的整數部分和小數部分分別轉換為二進位制數,然後將這兩部分的二進位制數合併得到完整的二進位制數。

首先,通過短除法,十進位制數可以除以2得到多個餘數。最後,將餘數從下到上進行排列組合,得到二進位制數。

然後將小數部分乘以2,取每一步的整數部分,從上到下排列所有整數,得到小數部分的二進位制數。

5樓:跪著作揖

從最低位(最右)算起,位上的數字乘以本位的權重,權重就是2的第幾位的位數減一次方。

比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起來。

2(1-1)代表2的0次方,就是1;其他類推

比如二進位制1101,換算成十進位制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=13。

擴充套件資料

1、二進位制轉換為八進位制:

把二進位制的數從右往左,三位一組,不夠補0

列:111=4+2+1=7

11001拆分為 001和011,001=1,011=2+1=3。

那麼11001轉換為八進位制就是31。

2、二進位制轉換為十六進製制:

參照二進位制轉八進位制,但是它是從右往左,四位一組,不夠補0

列子:1101101拆分為1101、0110

分別計算兩個二進位制的值,1101=8+4+0+1=13,十六進製制中13為d

0110=4+2=6,那麼二進位制1101101轉換為十六進製制就是6d。

6樓:渴侯念雁

用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

二進位制轉十進位制

從最後一位開始算,依次列為第0、1、2...位第n位的數(0或1)乘以2的n次方

得到的結果相加就是答案

例如:01101011.轉十進位制:

第0位:1乘2的0次方=1

1乘2的1次方=2

0乘2的2次方=0

1乘2的3次方=8

0乘2的4次方=0

1乘2的5次方=32

1乘2的6次方=64

0乘2的7次方=0

然後:1+2+0

+8+0+32+64+0=107.

二進位制01101011=十進位制107.

7樓:仙戈雅

方法是用十進位制的數字連續除以2,所得的商繼續除以2,依此類推,直到商為0時停止,然後把所有餘數倒序輸出就是二進位制

例如,十進位制數5轉換為二進位制的過程如下:

5/2=2 ...1

2/2=1 ...0

1/2=0 ...1

倒序輸出就是101(從下至上),所以十進位制數5轉換二進位制就是101。

8樓:

例如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

1/2 = 0 餘1

故二進位制為100101110

下面是c++偽**

將n轉化為二進位制表達。

s[1001];

while (n!=0)

for (int i=s[0];i>=1;i--)printf("%d",s[i]);

列印出來的就是n從十進位制轉化為二進位制

9樓:山慧興睿範

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

方法/步驟

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

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所示)對應的值相乘後相加得到的值即為換算後的十進位制。

注意事項

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

二進位制轉化為十進位制的演算法?

10樓:跪著作揖

從最抄低位(最右)算起襲,位上的數字乘以本位的權重

bai,權重就du是2的第幾位的位數減一次方。zhi

比如第2位就是2的(dao2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起來。

2(1-1)代表2的0次方,就是1;其他類推

比如二進位制1101,換算成十進位制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=13。

擴充套件資料

1、二進位制轉換為八進位制:

把二進位制的數從右往左,三位一組,不夠補0

列:111=4+2+1=7

11001拆分為 001和011,001=1,011=2+1=3。

那麼11001轉換為八進位制就是31。

2、二進位制轉換為十六進製制:

參照二進位制轉八進位制,但是它是從右往左,四位一組,不夠補0

列子:1101101拆分為1101、0110

分別計算兩個二進位制的值,1101=8+4+0+1=13,十六進製制中13為d

0110=4+2=6,那麼二進位制1101101轉換為十六進製制就是6d。

11樓:亦若

從最低位(最來右)算起,

源位上的數bai字乘以本位的權重du,權重就是zhi2的第幾位的位數

dao減一次方。

比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起來。

2(1-1)代表2的0次方,就是1;其他類推

比如二進位制1101,換算成十進位制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=13

擴充套件資料

計數規則:

在人們使用最多的進製計數制中,表示數的符號在不同的位置上時所代表的數的值是不同的。

十進位制(d(decimal))是人們日常生活中最熟悉的進製計數制。在十進位制中,數用0,1,2,3,4,5,6,7,8,9這十個符號來描述。計數規則是逢十進一。

二進位制(b(binary))是在計算機系統中採用的進製計數制。在二進位制中,數用0和1兩個符號來描述。計數規則是逢二進一。

十六進製制(h(hexadecimal))是人們在計算機指令**和資料的書寫中經常使用的數制。在十六進製制中,數用0,1,…,9和a,b,…,f(或a,b,…,f)16個符號來描述。計數規則是逢十六進一。

c語言十進位制轉二進位制,C語言十進位制轉二進位制

何老師 答疑 十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元...

十進位制100轉二進位制是多少,十進位制數100轉換為二進位制是

十進位制100轉成二進位制是1100100,十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 的方法。十進位制100轉二進位制的計算過程 100 2 50 餘0,50 2 25 餘0,25 2 12 餘1,12 2 6 餘0,6 2 3 餘0,3 2 1 餘1,1 2 0 餘1。然後將餘數進行...

十進位制數100轉換為二進位制是,十進位制的數字100,轉化為二進位制是多少?

假面 答案是1100100。就是用100除以2得到商。還有餘數。一直除到商為0為止。餘數從後向前寫。就是答案。通過短除法,讓十進位制數不斷被2整除,可以得到多個餘數,最後將得到的餘數從下到上排列組合,即可得到轉化的二進位制數。然後把小數部分不斷的對2連乘,取每一步的整數部分,再將所有的整數從上到下排...