Floating point 计算机如何区分浮点和整数

Floating point 计算机如何区分浮点和整数,floating-point,Floating Point,我想这只是一个扩展 现在,编译器将数据类型定义为整数、有符号和无符号以及浮点,以便处理器可以适当地使用它们 但是,比如说,处理器有一个地址。现在,RTN中一条非常基本的add指令类似于 添加R1,R2ieR1它没有。处理器只是在指定的寄存器或内存地址上执行指令。它不执行指令。处理器只是在指定的寄存器或内存地址上执行指令。它知道,因为你告诉它。在ia32处理器上,ADD指令添加整数FADD添加浮点数(请参阅)。要将浮点添加到整数,必须将浮点转换为整数,或将整数转换为浮点。它知道,因为你告诉它。在i

我想这只是一个扩展

现在,编译器将数据类型定义为整数、有符号和无符号以及浮点,以便处理器可以适当地使用它们

但是,比如说,处理器有一个地址。现在,RTN中一条非常基本的add指令类似于


添加R1,R2
ie
R1它没有。处理器只是在指定的寄存器或内存地址上执行指令。

它不执行指令。处理器只是在指定的寄存器或内存地址上执行指令。

它知道,因为你告诉它。在ia32处理器上,
ADD
指令添加整数
FADD
添加浮点数(请参阅)。要将浮点添加到整数,必须将浮点转换为整数,或将整数转换为浮点。

它知道,因为你告诉它。在ia32处理器上,
ADD
指令添加整数
FADD
添加浮点数(请参阅)。若要将浮点添加到整数,必须将浮点转换为整数,或将整数转换为浮点。

事实并非如此。如果你有32位的数据,没有内在的方法知道这32位应该被解释为整数还是浮点数。好的,那么它只是把所有的东西都当作2的补码整数。那么,当我们定义数据类型时,只有编译器才能生成浮点指令之类的指令?不,它甚至不把它们当作2的补码。它在操作数上执行指令。整数和浮点运算有不同的指令(和寄存器)。处理器永远不会被要求添加一个浮点和一个整数。而且,你所说的似乎是语言,而不是CPU,或者是架构相关的。事实并非如此。如果你有32位的数据,没有内在的方法知道这32位应该被解释为整数还是浮点数。好的,那么它只是把所有的东西都当作2的补码整数。那么,当我们定义数据类型时,只有编译器才能生成浮点指令之类的指令?不,它甚至不把它们当作2的补码。它在操作数上执行指令。整数和浮点运算有不同的指令(和寄存器)。处理器永远不会被要求添加一个浮点和一个整数。而且,你所说的似乎与语言(而不是CPU)或体系结构有关。那么处理器如何执行浮点运算呢?在上面的例子中,假设我希望结果是正确的,即float+integer。那么,我如何得到正确的结果呢?@jaskirat在这种情况下,您的编译器发出的代码。将整数转换为浮点,然后转换为b。它告诉ALU将两个浮点相加。当您使用适当的指令时,它执行浮点运算。您不能告诉处理器添加int和float。因为处理器不知道int或float是什么。两者之间的任何转换都发生在您实际执行加法之前。好的!是的,我知道了。都在说明书上。但还有一点,如果我只是随机提取一个记忆单词,我应该期待什么呢?整数?在2的补充中,如果体系结构是这样存储的?@jaskirat“2的补充”不是存储数据的方式。这是一种表示负数的方法。您有原始位,8位、16位、32位、64位或寄存器支持的任何数量。那么处理器如何执行浮点运算?在上面的例子中,假设我希望结果是正确的,即float+integer。那么,我如何得到正确的结果呢?@jaskirat在这种情况下,您的编译器发出的代码。将整数转换为浮点,然后转换为b。它告诉ALU将两个浮点相加。当您使用适当的指令时,它执行浮点运算。您不能告诉处理器添加int和float。因为处理器不知道int或float是什么。两者之间的任何转换都发生在您实际执行加法之前。好的!是的,我知道了。都在说明书上。但还有一点,如果我只是随机提取一个记忆单词,我应该期待什么呢?整数?在2的补充中,如果体系结构是这样存储的?@jaskirat“2的补充”不是存储数据的方式。这是一种表示负数的方法。您有原始位,8位、16位、32位、64位或寄存器支持的任何数量。哦!我想一切都解决了!这完全取决于指令。处理器从指令中了解如何操作操作数和操作数的类型。谢谢哦我想一切都解决了!这完全取决于指令。处理器从指令中了解如何操作操作数和操作数的类型。谢谢