亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言中如何用算法實現進制間的轉化?

C語言中如何用算法實現進制間的轉化?

C
慕容708150 2018-11-20 15:19:59
C語言中如何用算法實現進制間的轉化?
查看完整描述

1 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

說明:如18的二進制代碼為:10010(用除2法算得). 18/2=9 余 0 9/2=4 余 1 4/2=2 余 0 2/2=1 余 0 1/2=0 余 1 (當除得的結果為0時,只需將所有的余數從上往上連在一起,就組成了18的二進制代碼:10010) 如果要轉換為8進制數,即用3個二進制位就可以表示一個8進制數,為了方便計算,我們在某些位上進行截止計算,如18我們就截取表示成10,010(“,”前的用逐位乘2法算得,當遇上“,”時乘10再用乘2法算得。),所以18的8進制表示為(1*2+0)*10+(0*2+1)*2+0=22(0)。對于16進制只要4個二進制就能表示一位16進制數,如18的截取表示為1,0010,16進制表示為 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("輸入一個十進制數:%d",num);//輸入一個十進制數num i=num; for(j=0;i>0;j++){//輸出二進制數組 ch1[j]=i%2; i=i/2; } for(i=0,2*i<j,i++){//倒置得出正確的二進制代碼 temp=ch1[i]; ch1[i]=ch1[j-i]; ch1[j-i]=temp; } do{ scanf("輸入要輸出的進制:%d",i);//輸入要轉換的進制數i }while(i!=2||i!=8||i!=16); if (i==8) k=3;//計算要所選進制所允許截取的最大位數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){//進行分位點的計算 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進制代碼為:%d",num,i,rlt); }



查看完整回答
反對 回復 2018-12-11
  • 1 回答
  • 0 關注
  • 534 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號