在DOS语言(命令提示度用的那种,批处理文件)中,如何让计算程序进行浮点运算

在DOS语言(命令提示度用的那种,批处理文件)中,如何让计算程序进行浮点运算,第1张

关于set /a 里的那些运算符

>

DEBCD d66 d80运算后D80/D81表示10进制浮点数的整数部分,D82/D83表示10进制浮点数的指数部分,它们不是直接表示整数!

根据你的程序来看,你希望使用的是一个双整数D80比较指令,因此,你应使用

DINT D66 D80来进行转换。

不知道楼主需不需要规格化小数。

提取阶码可以这样,就32位浮点数来说

第31位是符号位,然后跟着8位是阶码,第30位是阶码符号位,跟着7位是阶码值,可以这样。

char power1,power2;

unsigned int tail1,tail2

float n1,n2;

power1 = (char)(((unsigned int)n1 << 1) >> 24);

power2 = (char)(((unsigned int)n2 << 1) >> 24);

tail1 = ((unsigned int)n1 >> 23) & 0x7FFFFF;

tail2 = ((unsigned int)n2 >> 23) & 0x7FFFFF;

首先两个相加

power1 += power2;

然后两个相乘

tail1 = tail2

浮点由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。

浮点数a由两个数m和e来表示:a = m × b^e(b的e次方)。

在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±ddddddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。

有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

我们可以用这3种方法来表示浮点数:

1、BCD 代码。

2、 阶码尾数表示法。

3、 我们可以把第二种方法改造一下,就能得到一种更好的方法。先把一个浮点数的小数点移到最后,用N=M×RC 表示,R=10,然后再把M 转换为二进制B,再用C 做阶码,B 做尾数用阶码尾数法表示。

例如: 314159=314159×10^(-5)。

314159 用二进制表示为1001100101100101111。

用这种方法不仅可以精确表示浮点数的值,还可以充分的利用存储空间。

扩展资料:

浮点运算单元(FPU)

浮点数运算和整数运算不同,所以运算单元当然不同。早期的浮点处理器是作为 CPU 的「外置协处理器」出现的。x87 FPU 特指与 x86 处理器配套的浮点协处理器架构。

有以下要点:

1、浮点寄存器采用栈结构。

深度为 8,宽度为 80 位,即 8 个 80 位的寄存器。

名称为 ST(0) ~ ST(7),栈顶为 ST(0),编号分别为 0 ~ 7。

2、所有浮点运算都按 80 位拓展精度进行。

3、浮点数在浮点寄存器和内存之间传送。

(1)float、double、long double 型的变量在内存中分别用 IEEE 754 单精度、双精度、扩展精度表示,分别占 32 位,64 位,96 位(前 16 位无效)。

(2)float、double、long double 类型变量在浮点寄存器中都用 80 位拓展精度表示。

(3)从浮点寄存器到内存:80 位拓展精度格式转换为 32 位或者 64 位。

(4)从内存到浮点寄存器:32 位或者 64 位转换为 80 位扩展精度格式。

参考资料来源:百度百科-浮点

百度百科-浮点表示法

以上就是关于在DOS语言(命令提示度用的那种,批处理文件)中,如何让计算程序进行浮点运算全部的内容,包括:在DOS语言(命令提示度用的那种,批处理文件)中,如何让计算程序进行浮点运算、嵌入式中关于中断程序中浮点数运算的效率问题、DVPES2 PLC程序 浮点运算错误求高人指点!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9852995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存