二進制是計算技術中廣泛采用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是“逢二進一”,借位規則是“借一當二”,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統。
生活中其實很多地方的計數方法都多少有點不同進制的影子。 比如我們最常用的10進制,其實起源於人有10個指頭。如果我們的祖先始終沒有擺脫手腳不分的境況,我想我們現在一定是在使用20進制。還有七進制,比如星期。十六進制,比如小時或“一打”,六十進制,比如分鐘或角度……
現在我們先主要考慮十進制數如何轉換為二進制數。只要熟悉了2進制的轉換,其他的任意進制都容易了!
例如十進制數字11轉換成二進制為1011,它是如何做的呢?
11/2=5……1
5/2=2……1
2/2=1……0
1/2=0……1
將上面的余數,從下至上排序即可得到(1011)b.
#include<iostream>
using namespace std;
void d2b(int var,int *p){ //定義函數
int i=31,j=0, tmp; //定義函數中需要用到的變量 tmp用於交換,其他為下標
while(var>0){//當var大於0時對var求余,並除以2賦給var
p[i]=var%2;//第一個余數存貯於p[31](數組最後一位)
var=var/2;
i--;
}
i++;
//*將獲得值的起始位置遷移至p[0]
for(;i<32;j++){
tmp=p[j];
p[j]=p[i];
p[i]=tmp;
i++;
}
p[j]=-1;//將數值結尾後面設置為-1
}
int main(){
int var=222;
int p[32];
d2b(var,p);
for(int i=0;p[i]>=0;i++){ //順序輸出數組p,遇到-1終止
cout<<p[i];
}
}
因為c++的整數在內存中占4個字節,而上面的程序只是對正整數做處理,故p的數組長度32剛好夠用。下面是執行結果