1. 二進制轉十進制,十進制轉二進制的演算法(求助)
二進制轉換為十進制:
方法:「按權展開求和」,該方法的具體步驟是先將二迸制的數寫成加權系數展開式,而後根據十進制的加法規則進行求和 。
規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。
十進制轉換為二進制:
一個十進制數轉換為二進制數要分整數部分和小數部分分別轉換,最後再組合到一起。
整數部分採用 "除2取余,逆序排列"法。具體做法是:用2整除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為小於1時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
小數部分要使用「乘 2 取整法」。即用十進制的小數乘以 2 並取走結果的整數(必是 0 或 1),然後再用剩下的小數重復剛才的步驟,直到剩餘的小數為 0 時停止,最後將每次得到的整數部分按先後順序從左到右排列即得到所對應二進制小數。
通用進制轉換:
不同進制之間的轉換本質就是確定各個不同權值位置上的數碼。轉換正整數的進制的有一個簡單演算法,就是通過用目標基數作長除法;余數給出從最低位開始的「數字」。
(1)進制演算法擴展閱讀:
1、十進制整數轉二進制整數:
十進制整數轉換為二進制整數 十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
2、十進制小數轉換為二進制小數:
十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。
然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。
參考資料:網路-二進制
2. 十六進制計算方法
0-9對應0-9;
A-F對應10-15;
十六進制數的加減法的進/借位規則為:借一當十六,逢十六進一。
十六進制數同二進制數及十進制數一樣,也可以寫成展開式的形式。
十進制整數轉十六進制數:「除以16取余,逆序排列」(除16取余法)
例:(1765)10=(6E5)2
1765/16=110.......5
110/16=6........14
616=0......6
因為14對應E
十六進制數轉換成二進制數:把每一個十六進制數轉換成4位的二進制數,就得到一個二進制數。
十六進制數字與二進制數字的對應關系如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D
0010 -> 2 0110 -> 6 1010 -> A 1110 -> E
0011 -> 3 0111 -> 7 1011 -> B 1111 -> F
例:將十六進制數5DF.9 轉換成二進制:
5 D F . 9 0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:將二進制數1100001.111 轉換成十六進制:
0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
(2)進制演算法擴展閱讀:
進制轉換的理論:
1、 二進制數、十六進制數轉換為十進制數:
用按權展開法把一個任意R 進制數a n a n-1 ...a1a 0 . a -1 a -2...a -m轉換成十進制數,其十進制數值為每一位數字與其位權之積的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+ a -2×R -2+ …+ a -m ×R -m
2、 十進制轉化成R 進制十進制數輪換成R 進制數要分兩個部分:
整數部分要除R 取余數,直到商為0,得到的余數即為二進數各位的數碼,余數從右到左排列(反序排 列) 。小數部分要乘R 取整數,得到的整數即為二進數各位的數碼,整數從左到右排列(順序排列) 。
3、十六進制轉化成二進制:每一位十六進制數對應二進制的四位,逐位展開。
4、 二進制轉化成十六進制:將二進制數從小數點開始分別向左(對二進制整數)或向右(對二進制小數)每四位組成一組,不足四位補零。
3. 二進制轉十六進制演算法(舉例)
二進制轉十六進制
二進制數要轉換為十六進制,就是以4位一段,分別轉換為十六進制。
從右到左 4位一切
例如 100111110110101
左邊不滿4位的可以用0補滿 0100,1111,1011,01012
進制0000對應16位進制0
0001>>>1
0010>>>2
0011>>>3
0100>>>4
0101>>>5
0110>>>6
0111>>>7
1000>>>8
1001>>>9
1010>>>A
1011>>>B
1100>>>C
1101>>>D
1110>>>E
1111>>>F
所以上面的2進制轉為16進制為 4FB5
(3)進制演算法擴展閱讀
十六進制--->二進制
反過來,當看到 FD時,迅速將它轉換為二進制數方法
先轉換F:
看到F,需知道它是15,然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。
接著轉換 D:
看到D,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。
所以,FD轉換為二進制數,為: 1111 1101
由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進制數時,也可以先轉換成16進制,然後再轉換成2進制。
4. 所有進制的演算法
#include <stdio.h>void a();void b();void c();void main(){ int s; do { printf("0.退出\n1.十進制~二進制\n2.十進制~八進制\n3.十進制~十六進制\n請選擇:"); scanf("%d",&s); if(s==0) { break; } switch(s) { case 1: a();break; case 2: b();break; case 3: c();break; default:printf("輸入有誤!請輸入0~4之間的數\n");break; } }while(1);}void a(){ int num,p[100],n=0,i; printf("請輸入一個十進制整數:"); scanf("%d",&num); while(num!=0) { p[n]=num%2; num/=2; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void b(){ int num,p[100],n=0,i; printf("請輸入一個十進制整數:"); scanf("%d",&num); while(num!=0) { p[n]=num%8; num/=8; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void c(){ int num,p[100],n=0,i; printf("請輸入一個十進制整數:"); scanf("%d",&num); while(num!=0) { p[n]=num%16; num/=16; n++; } for(i=n-1;i>=0;i--) { if(p[i]<10) { printf("%d",p[i]); } else { switch(p[i]) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; } } } printf("\n");} 答案補充 10進制數轉化成R進制數就是不斷地 取余、整除,最後把所有餘倒序排列 比如:6轉化成2進制數的步驟是,6取2的余是0,整除得3,3取2的余是1,整除得1,1取2的余是1,整除2得0,計算結束,再把所有餘倒序排列,即110。
其它進制也是同樣的道理,如果進制大於10,就要用ABCD來分別表示10進制中的(10、11、12、13、14),可以去查詢下權的概念
5. 二進制的計算方法是怎樣的請舉個例子謝謝,
二進制的運算算術運算二進制的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位進位);即7=111,10=10103=11。
二進制的減法:0-0=0,0-1=1(向高位借位) 1-0=1,1-1=0 (模二加運算或異或運算) ;
二進制的乘法:0 * 0 = 00 * 1 = 0,1 * 0 = 0,1 * 1 = 1 二進制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (無意義),1÷1 = 1 ;
邏輯運算二進制的或運算:遇1得1 二進制的與運算:遇0得0 二進制的非運算:各位取反。
(5)進制演算法擴展閱讀:
二進制的轉換:
二進制轉換為其他進制:
1、二進制轉換成十進制:基數乘以權,然後相加,簡化運算時可以把數位數是0的項不寫出來,(因為0乘以其他不為0的數都是0)。小數部分也一樣,但精確度較少。
2、二進制轉換為八進制:採用「三位一並法」(是以小數點為中心向左右兩邊以每三位分組,不足的補上0)這樣就可以輕松的進行轉換。例:將二進制數(11100101.11101011)2轉換成八進制數。 (11100101.11101011)2=(345.353)8
3、二進制轉換為十六進制:採用的是「四位一並法」,整數部分從低位開始,每四位二進制數為一組,最後不足四位的,則在高位加0補足四位為止,也可以不補0。
小數部分從高位開始,每四位二進制數為一組,最後不足四位的,必須在低位加0補足四位,然後用對應的十六進制數來代替,再按順序寫出對應的十六進制數。
6. 二進制轉化為十進制的演算法
從最低位(最右)算起,位上的數字乘以本位的權重,權重就是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。
(6)進制演算法擴展閱讀:
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。
參考資料:網路-數制
7. 計算機各種進制數怎麼算的
A.101001=1×(2的五次方)+0×(2的四次方)+1×(2的三次方)+0×(2的二次方)+0×(2的一次方)+1×(2的零次方)=41
B.52=52
C.2B=2×(16的一次方)+12×(16的零次方)=44
D.44=44
8. 進制怎麼算
計算機的進制計算方法
二進制轉十進制方法:「按權展開求和」
例: (1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^(-1)+1×2^(-2) )10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十進制轉二進制 · 十進制整數轉二進制數:「除以2取余,逆序排列」。
(8)進制演算法擴展閱讀:
對於任何一個數,我們可以用不同的進位制來表示。比如:十進數57(10),可以用二進製表示為111001(2),也可以用五進製表示為212(5),也可以用八進製表示為71(8)、用十六進製表示為39(16),它們所代表的數值都是一樣的。
9. 十六進制轉換成十進制的具體演算法
十六進制轉換成十進制的具體演算法是:
1、首先明白16進制數(從右到左數是第0位,第1位,第2位……)的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方,依次這樣排列下去。
2、明白ABCDEF表示的二進制數字分別是10,11,12,13,14,15。
3、十六進制轉換成十進制的公式是:要從右到左用二進制的每個數去乘以16的相應次方,然後這些數字相加就是了。
在進行進制轉換時有一基本原則:
轉換後表達的「量」的多少不能發生改變。二進制中的111個蘋果和十進制中的7個蘋果是一樣多的。
十進制中的數位排列是這樣的…… 萬 千 百 十 個 十分 百分 千分……
R進制中的數位排列是這樣的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……
可以看出相鄰的數位間相差進制的一次方。
10. 二進制計算方法
給你舉個例子把,將十進制的240轉化為2進制
240/2=120......0
(表示余數是0,下同)
120/2=60........0
60/2=30..........0
30/2=15..........0
15/2=7...........1
7/2=3.............1
3/2=1.............1
1/2=0.............1
因此240的二進制是1111
0000