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連乘,取每一步的整數部分,再將所有的整數從上到下排...