進制計演算法
⑴ 進制計算方法 詳細演算法
c++進制轉換程序:
這是一個結構完整、功能完善的程序,通過壓棧來實現進制轉換、出棧實現結果輸出:
#include<iostream.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
SqStack S;
void InitStack(SqStack &S1)
{
S1.base=(int *)malloc(100*sizeof(int));
S1.top=S1.base;
S1.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S2,int e)
{
*S2.top++=e;
}
void Pop(SqStack &S3,int &e)
{
e=* --S3.top;
}
void tentotwo(int n)
{
while(n)
{
Push(S,n%2);
n=n/2;
}
cout<<"轉成的二進制數是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
cout<<e;
}
cout<<endl;
}
void tentoeight(int n)
{
while(n)
{
Push(S,n%8);
n=n/8;
}
cout<<"轉成的八進制數是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
cout<<e;
}
cout<<endl;
}
void tentosixteen(int n)
{
while(n)
{
Push(S,n%16);
n=n/16;
}
cout<<"轉成的十六進制數是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
switch(e)
{
case 10: cout<<'A';
break;
case 11: cout<<'B';
break;
case 12: cout<<'C';
break;
case 13: cout<<'D';
break;
case 14: cout<<'E';
break;
case 15: cout<<'F';
break;
}
cout<<e;
}
cout<<endl;
}
int main()
{
InitStack(S);
f:
cout<<"請選擇您想進行的操作:1.十進制轉換成二進制 2.十進制轉換成八進制 3.十進制轉換成十六進制"<<endl;
int a,m;
cin>>a;
switch (a)
{
case 1:
{
cout<<"請輸入一個十進制數"<<endl;
cin>>m;
tentotwo(m);
break;
}
case 2:
{
cout<<"請輸入一個十進制數"<<endl;
cin>>m;
tentoeight(m);
break;
}
case 3:
{
cout<<"請輸入一個十進制數"<<endl;
cin>>m;
tentosixteen(m);
break;
}
}
goto f;
return 0;
}
⑵ 生活中還有哪些進制計數法
生活中的進制計數法有:四進制、五進制、十進制、十二進制、三十進制。
⑶ 二進制的計算方法是怎樣的請舉個例子謝謝,
二進制的運算算術運算二進制的加法: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 二進制的非運算:各位取反。
(3)進制計演算法擴展閱讀:
二進制的轉換:
二進制轉換為其他進制:
1、二進制轉換成十進制:基數乘以權,然後相加,簡化運算時可以把數位數是0的項不寫出來,(因為0乘以其他不為0的數都是0)。小數部分也一樣,但精確度較少。
2、二進制轉換為八進制:採用「三位一並法」(是以小數點為中心向左右兩邊以每三位分組,不足的補上0)這樣就可以輕松的進行轉換。例:將二進制數(11100101.11101011)2轉換成八進制數。 (11100101.11101011)2=(345.353)8
3、二進制轉換為十六進制:採用的是「四位一並法」,整數部分從低位開始,每四位二進制數為一組,最後不足四位的,則在高位加0補足四位為止,也可以不補0。
小數部分從高位開始,每四位二進制數為一組,最後不足四位的,必須在低位加0補足四位,然後用對應的十六進制數來代替,再按順序寫出對應的十六進制數。
⑷ 10進制轉16進制的計算方法是怎樣的
10進制轉16進制的計算方法是對於整數部分,用被除數反復除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。具體的過程如下:
比如要轉換120為十六進制數:
1、把要轉換的數,除以16,得到商和余數,
2、那麼要轉換的數是120, 120 ÷ 16,得到商是7,余數是8。
3、「將商繼續除以16,直到商為0……」,現在商是7,還不是0,所以繼續除以16。那就 7 ÷ 16, 得到商是0,余數是7。現在商已經是0。
4、我們兩次計算依次得到余數分別是:8、7,將所有餘數倒序排列,那就是:78。
注意事項:
1、對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。
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
(5)進制計演算法擴展閱讀:
進制轉換的理論:
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、 二進制轉化成十六進制:將二進制數從小數點開始分別向左(對二進制整數)或向右(對二進制小數)每四位組成一組,不足四位補零。
⑹ 進制轉換演算法是怎麼算
很簡單的,給你看兩個例子你就明白了。
十進制轉二進制:用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 位,第n位數(0或1)分別乘以2的n次方,最後相加就是結果
例如:01101011 轉十進制:
第0位:1乘2的0次方=1
第1位:1乘2的1次方=2
第2位:0乘2的2次方=0
第3位:1乘2的3次方=8
第4位:0乘2的4次方=0
第5位:1乘2的5次方=32
第6位:1乘2的6次方=64
第7位:0乘2的7次方=0
然後:1+2+0+8+0+32+64+0=107.所以,十進制就是107
⑺ 二進制轉換成十六進制計算方法
二進制轉十六進制方法為:十六進制是取四合一,即從二進制的小數點為分界點,向左(或向右)每四位取成一位;
組分好以後,對照二進制與十六進制數的對應表,將四位二進制按權相加,得到的數就是一位十六進制數,然後按順序排列,小數點的位置不變哦,最後得到的就是十六進制數
(注意事項:4位二進制轉成十六進制是從右到左開始轉換,不足時補0)。
(7)進制計演算法擴展閱讀:
進制轉換是人們利用符號來計數的方法。進制轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。
基數是指,進位計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。位權是指,進位制中每一固定位置對應的單位值。
「數制」只是一套符號系統來表示指稱「量」的多少。我們用「1」這個符號來表示一個這一「量」的概念。自然界的「量」是無窮的,我們不可能為每一個「量」都造一個符號,這樣的系統沒人記得住。
所以必須用有限的符號按一定的規律進行排列組合來表示這無限的「量」。符號是有限的,這些符號按照某種規則進行排列組合的個數是無限的。十進制是10個符號的排列組合,二進制是2個符號的排列組合。
在進行進制轉換時有一基本原則:轉換後表達的「量」的多少不能發生改變。二進制中的111個蘋果和十進制中的7個蘋果是一樣多的。
參考資料:網路-進制轉換
⑻ 進制計數法有哪些
2進制、8進制、10進制和16進制。
⑼ 有哪些進制計數法
一般常用的有2進制,8進制,10進制,16進制
2進制在計算機領域中應用最廣泛,然後是16進製表示微機中的地址,10進制則是平常應用中的。8進制相對來說應用少一點。