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,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702525407121350.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:任意进制数转换.doc
本文 PDF 下载地址:任意进制数转换.pdf
留言与评论(共有 0 条评论) |