1.已知两个十进制数,请把十进制数化成二进制浮点数,再按浮点加减法写出每步计算结果,十进制95转换为二进制

文章 3年前 (2021) admin
0

Q1:十进制数转二进制浮点数

按楼主的要求改完了#include #include #define chang 24 #define fuhao 1 //符号位 #define jieshu 8 //阶数 #define weishu 23 //位数 #define weishuB 32 //尾数 void dayuyizhuanhuan(double shijinshuyoufuhao,int *p);void main() {double shijinshu; int i=0,fudianB[weishuB]; cout<<"请输入一个十进制数"<>shijinshu; //if(fabs(shijinshu)>1) dayuyizhuanhuan(shijinshu,fudianB); for(i=0;i<32;i++) cout<<fudianB[i]; cout<<endl;} void dayuyizhuanhuan(double shijinshuyoufuhao,int *p) {int i=0,j=0,t=0,w=0,x=0,m=0,c=0,guozh[chang],guox[chang],zhengshubufenB[chang],xiaoshubufenB[chang]; double xiaoshubufenD; int zhengshubufenD; double shijinshuD; shijinshuD=fabs(shijinshuyoufuhao); zhengshubufenD=(int)shijinshuD; xiaoshubufenD=shijinshuD-zhengshubufenD; //cout<<zhengshubufenD<<" "<<xiaoshubufenD<<endl;///////while(zhengshubufenD)//整数部分的转化 {guozh[i]=zhengshubufenD%2; i++; zhengshubufenD=zhengshubufenD/2; } //cout<<i<<endl;///////t=i,w=i-1; for(j=0;j<t;j++) {zhengshubufenB[j]=guozh[w]; w--; } t=weishu-i+1,w=0; ////////cout<<t<<endl;while(xiaoshubufenD!=0&&t;!=0)//小数部分的转化 {guox[x]=(int)(xiaoshubufenD*2); //cout<<guox[x];x++; xiaoshubufenD=xiaoshubufenD*2-(int)(xiaoshubufenD*2); t--; } //cout<<endl;//cout<<guox[22]<<" "<<x<<" "<<t<<endl;m=x,c=0; //cout<<guox[22]<<endl;for(j=0;j<m;j++) {xiaoshubufenB[j]=guox[c]; c++; } //cout<<guox[22]<<" "<<c<<" "<<j<<endl;//int a;////////for(a=0;a<x;a++)//cout<<xiaoshubufenB[a];//cout<<endl;int s[fuhao],E[jieshu],guoE[jieshu],jishua=0,jishub=0,jishuc=0,jishud=0; int ee; ee=i+127-1; while(ee)//阶数的转化 {guoE[jishua]=ee%2; jishua++; ee=ee/2; } if(i==1){jishub=jishua,jishuc=jishua-1; E[jishud]=0;for(jishud=1;jishud<8;jishud++) {E[jishud]=guoE[jishuc]; jishuc--; } }else{jishub=jishua,jishuc=jishua-1; for(jishud=0;jishud0)//符号位 s[0]=0; else s[0]=1; int jishue=0,jishuw=0,jishux=0,*q; q=p; *q=s[0]; for(q=(p+1);q<=(p+8);q++)//阶数的输入 {*q=E[jishue]; jishue++; } if((i+x-1)1) {for(q=(p+9);q<=(p+8+i-1);q++) {*q=zhengshubufenB[jishuw+1]; jishuw++; } for(q=(p+8+i);q<=(p+8+i-1+x);q++) {*q=xiaoshubufenB[jishux]; jishux++; } for(q=(p+x+8+i);q<=(p+31);q++) {*q=0; } } else { for(q=(p+9);q<=(p+8+x);q++) { *q=xiaoshubufenB[jishux]; jishux++; } for(q=(p+x+8+1);q<=(p+31);q++) {*q=0; } }} else {for(q=(p+9);q<=(p+8+i-1);q++) {*q=zhengshubufenB[jishuw+1]; jishuw++; } for(q=(p+8+i);q<=(p+8+i-1+x);q++) {*q=xiaoshubufenB[jishux]; jishux++; } } }

Q2:将十进制数写成二进制定点数和浮点数

二进制转换:x=-110110。定点数表示为:x=-0000110110。浮点数表示为:x=-(0.110110000) * 2。在110次方浮点机器中,[x]是=0,0110。1.1101100000[x]补充=0,0110;1.0010100000[x]逆=0,0110;1.0010011111当十进制数转换为二进制数时,由于整数和小数的转换方式不同,十进制数的整数部分和小数部分在合并前分别进行转换。扩展数据:1。十进制整数转换成二进制整数。十进制整数通过“除以2,取余数,逆序排列”的方法转换成二进制整数。具体来说:将十进制整数除以2,得到一个商和余数;把商除以2,你会得到一个商和一个余数。这样做,直到商小于1。然后,将先得到的余数作为二进制数的低有效位,再将余数依次排列为二进制数的高有效位。原理:二进制的基数是2,我们十进制的时候二进制的基数是2。说到它的原理,就不得不谈到位置权的概念。在某种十进制计数系统中,每个数字符号所代表的数值是指数字符号值乘以与该数字符号相关的常数,称为“比特权重”。位的大小基于基数,数字符号所在位置的序列号是指数的整数次幂。百、十、一、十位小数的权重分别是10的二次幂、10的一次幂、10的0次幂、10的-1次幂。二进制数是2的n次方。2.十进制小数转换成二进制小数。十进制小数转换为二进制小数采用“乘2、取整、顺序排列”的方法。具体方法是:将十进制分数乘以2得到乘积,取出乘积的整数部分,将剩余的十进制部分乘以2得到另一个乘积,然后取出乘积的整数部分,如此进行,直到乘积的十进制部分为零,此时0或1是二进制的最后一位。或者直到达到要求的精度。然后,将提取的整数部分按顺序排列,第一个整数作为二进制十进制的高有效位,后一个整数作为低有效位。

Q3:谁可以帮我解决下面这十进制转换成二进制定点数和浮点数的问题

把十进制的29.86表示成二进制的浮点数,尾数24位,阶码8位

Q4:10进制写成2进制定点数和浮点数

哎计算机组成原理,首先把13和128变成2进制就是1101,和10000000,所以13/128=1101/10000000=0.0001101000(数值十位补3个0)定点数:0.0001101000浮点数规格化:0.1101000000*2^-11

Q5:将这个十进制表示成二进制的定点数和浮点数

题目不是要去阶码是五位吗?但是浮点数表示成:X=-(0.1101100000)*2的110次方阶码只有三位,所以要添加符号位0,还差一位即在末尾添加0

Q6:如何转换浮点数的二进制格式为十进制

二进制到十进制的十进制转换主要是乘以2的负一次幂,再乘以2的负一次幂、2的负二次幂、2的负三次幂等。例如,二进制数0.001转换为十进制数。第一位是0,然后是0*1/2,即0乘以2减去一阶。如果第二位为0,则0*1/4,即0乘以2的负二次幂。如果第三位数是1,那么就是1*1/8,也就是1乘以2的负三次方。每一位完成后,加0*1/2 0*1/4 1*1/8得到十进制0.125扩展数据:二进制到十进制:方法:“按权重展开求和”,该方法的具体步骤是将二进制数写入加权系数展开,然后按照十进制加法规则进行求和。规律性:一位数的位数为0,十位数的位数为1,其依次增加,而十位数中的位数是-1,百分位中的位数是-2,依次递减。十进制转换为二进制:十进制数转换为二进制数时,整数部分和十进制部分分别转换,最后组合在一起。整数部分采用“取余数2,逆序排列”的方法。具体来说:将十进制整数除以2,得到一个商和余数;把商除以2,你会得到一个商和一个余数。这样做,直到商小于1。然后,将先得到的余数作为二进制数的低有效位,再将余数依次排列为二进制数的高有效位。小数部分使用“乘以2”。也就是说,将十进制分数乘以2,带走得到的整数(必须是0或1),然后用剩余分数重复上一步,直到剩余分数为0,最后将每次得到的整数部分从左到右依次排列,得到对应的二进制分数。通用系统转换:不同系统之间转换的本质是确定不同权重位置的数字。有一个转换正整数系统的简单算法,就是用目标基数进行长除法;余数给出从最低位开始的“数”。参考:百度百科-二进制。

相关文章