1 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊
說明:如18的二進(jìn)制代碼為:10010(用除2法算得). 18/2=9 余 0 9/2=4 余 1 4/2=2 余 0 2/2=1 余 0 1/2=0 余 1 (當(dāng)除得的結(jié)果為0時,只需將所有的余數(shù)從上往上連在一起,就組成了18的二進(jìn)制代碼:10010) 如果要轉(zhuǎn)換為8進(jìn)制數(shù),即用3個二進(jìn)制位就可以表示一個8進(jìn)制數(shù),為了方便計(jì)算,我們在某些位上進(jìn)行截止計(jì)算,如18我們就截取表示成10,010(“,”前的用逐位乘2法算得,當(dāng)遇上“,”時乘10再用乘2法算得。),所以18的8進(jìn)制表示為(1*2+0)*10+(0*2+1)*2+0=22(0)。對于16進(jìn)制只要4個二進(jìn)制就能表示一位16進(jìn)制數(shù),如18的截取表示為1,0010,16進(jìn)制表示為 1*10+((0*2+0)*2+1)*2+0=12(h)。 #include "stdio.h" void main(){ int num,rlt,temp; int j,i,k; int ch1[30]; scanf("輸入一個十進(jìn)制數(shù):%d",num);//輸入一個十進(jìn)制數(shù)num i=num; for(j=0;i>0;j++){//輸出二進(jìn)制數(shù)組 ch1[j]=i%2; i=i/2; } for(i=0,2*i<j,i++){//倒置得出正確的二進(jìn)制代碼 temp=ch1[i]; ch1[i]=ch1[j-i]; ch1[j-i]=temp; } do{ scanf("輸入要輸出的進(jìn)制:%d",i);//輸入要轉(zhuǎn)換的進(jìn)制數(shù)i }while(i!=2||i!=8||i!=16); if (i==8) k=3;//計(jì)算要所選進(jìn)制所允許截取的最大位數(shù)k if (i==16) k=4; temp=0; rlt=0; for(i=0,i<j,i++){ if(i<j%k||(i-j%k)%k>0){ temp=temp*2+ch1[i];break; } if(i==j%k||(i-j%k)%k==0){//進(jìn)行分位點(diǎn)的計(jì)算 temp=temp*2+ch1[i];rlt=rlt*10+temp;temp=0;break; } } if (k==3) i=8; else if(k==4) i=16; else i=2; printf("%d的%d進(jìn)制代碼為:%d",num,i,rlt); }
- 1 回答
- 0 關(guān)注
- 532 瀏覽
添加回答
舉報(bào)