浮点数相加的程序怎样做?(C或者C++)

浮点数相加的程序怎样做?(C或者C++),第1张

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

提取阶码可以这样,就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

浮点除法,浮点运算实际上是普通的四种运算指令加上De,add,desub,deml,dediv。指令中可以使用十进制常量K、十六进制常量h、浮点常量e。

1.加法指令 ADD S1 S2 D:

注解 ;s1+s2 -D,如果是32位 (S1+1,S1)+(S2+1,S2)-(D+1,D)

2.减法指令 SUB S1 S2 D:

注解:S1-S2-D ,如果是32位  (S1+1,S)-(S2+1,S2)-(D+1,D)

3.乘法指令  MUL S1 S2 D:

注解: S1*S2-(D+1,D) 如果是32位(S1+1,S1)*(S2+1,S2)-(D+3,D+2,D+1,D)

4.除法指令   DIV S1 S2 D:

注解  :S1/S2-(D),(D+1)D 是商  D+1是余数。

扩展资料:

FX3U基本指令

1、触点指令:

LD a触点的逻辑运算开始

LDI b触点的逻辑运算开始

LDP 检测上升沿的运算开始

LDF 检测下降沿的运算开始

AND 串联a触点

ANI 串联b触点

ANDP 检测上升沿的联连接

ANDF 检测下降沿的串联连接

OR 并联a触点

ORI 并联b触点

ORP 检测上升沿的并联连接

ORF 检测下降沿的并联连接

2、结合指令

ANB 回路块的串联连接

ORB 回路块的并联连接

MPS 入栈

MRD 读栈

MPP 出栈

INV 运算结果的反转

MEP 运算结果上升沿脉冲化(Ver.2.30以上的产品对应)

MEF 运算结果下降沿脉冲化(Ver.2.30以上的产品对应)

参考以下代码

#include <stdio.h>

int main(void)

{

float n, n2, n3

printf("请输入一个数\n")

scanf("%f",&n)

printf("请再输入一个数\n")

scanf("%f",&n2)

n3=n2+n

printf("这两个数的和是%f",n3)

return 0

}


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

原文地址:https://54852.com/yw/11539051.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存