2023年12月14日發(作者:跳高訓練)

任意進制數的轉換
將一個無符號整數轉換為任意d進制數(2 一、十進制二進制的相互轉換 1.十進制轉換為二進制 十進制數轉換為二進制數時,由于整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換后,再加以合并。 (1) 十進制整數轉換為二進制整數 十進制整數轉換為二進制整數采用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然后把先得到的余數作為二進制數的低位有效位,后得到的余數作為二進制數的高位有效位,依次排列起來。 例如: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 (2) 十進制小數轉換為二進制小數 十進制小數轉換成二進制小數采用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘余下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。 十進制小數轉二進制數:"乘以2取整,順序輸出" 例: (0.625 ) D = (0.101)B 0.625 * 2 = 1.25 取 1 0.25 * 2 = 0.5 取 0 0.5 * 2 =1.0 取 1 例: (0.7)D =(0.1 0110 0110)B 0.7 * 2 = 1.4 取1 0.4 * 2 = 0.8 取 0 0.8 * 2 = 1.6 取 1 0.6 * 2 = 1.2 取 1 0.2 * 2= 0.4 取 0 然后把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,后取的整數作為低位有效位。 1.二進制數轉換成十進制數 由二進制數轉換成十進制數的基本做法是,把二進制數首先寫成加權系數展開式,然后按十進制加法規則求和。這種做法稱為"按權相加"法。 例如:1101B=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13D 例如:01101011.轉十進制: 01101011B=107D. 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0+8+0+32+64+0=107. 二、十進制數與任意進制數的相互轉換 求十進制與任意進制數轉換的思想與十進制轉換二進制數的思想是一樣的。(n為要轉換的整數,d為任意進制,d可以等于2、3、4、5、6、7、8、9、11、12、13、14、15......)即求n整除十進制數d的余數,得到n的d進制數的最低位數字,重復上述操作,直至n為0為止。依次得到n的d進制數表示的最低位至最高位數字。取出得到的字符,就得到n的d進制的字符串。 三、無符號整數的任意進制數轉換核心代碼段 1、進制轉換的思想 do { n= number%m;//實現對整數number取余 number/=m;//將number繼續整除 }while(number);//直至number為0為止 2、整形轉換為字符型 將十進制整形數轉換為其他進制數時,為了顯示出來 必須將其轉換為字符型。 flag--;//flag標志存儲字符的位置 switch(n) { ca 0: str[flag]='0';break; ca 1: str[flag]='1';break; ca 2: str[flag]='3';break; ca 3: str[flag]='3';break; ca 4: str[flag]='4';break; ca 5: str[flag]='5';break; ca 6: str[flag]='6';break; ca 7: str[flag]='7';break; ca 8: str[flag]='8';break; ca 9: str[flag]='9';break; ca 10: str[flag]='A';break; ca 11: str[flag]='B';break; ca 12: str[flag]='C';break; ca 13: str[flag]='D';break; ca 14: str[flag]='E';break; ca 15: str[flag]='F';break; } 3、遇到的問題 定義存儲字符數組為:char s [4]; 而將十進制數4轉換為二進制時表示為0100B剛好完全存儲進該數組里,但是顯示的時候會出現亂碼。如圖: 后改為定義存儲字符數組為:char s [5]="0000"; 這時將0100存儲進該數組顯示不再出現亂碼。如圖: 注意定義字符數組時要初始化: char s [5]={0} ;可以存儲五個字符。 char s [5]="0000";先初始化存了四個零,最后一位存儲截止符 -
本文發布于:2023-12-14 11:43:27,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1702525407121350.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:任意進制數轉換.doc
本文 PDF 下載地址:任意進制數轉換.pdf
| 留言與評論(共有 0 條評論) |