Memory 数字在计算机中是如何表示的?浮点和二补的作用是什么?

Memory 数字在计算机中是如何表示的?浮点和二补的作用是什么?,memory,floating-point,cpu,twos-complement,Memory,Floating Point,Cpu,Twos Complement,关于计算机如何处理数字,我有一个非常普遍的问题 一般来说,计算机系统只知道二进制-0和1。所以在内存中,任何数字都是一个位序列。表示的数字是int还是float并不重要 但是什么时候像基于IEEE754标准的浮点数和两个补码之类的东西会进入游戏呢?这仅仅是编译器C/C++、,。。。还有VMs.NET/Java 所有整数都是用两个补码表示的,这是真的吗 我读过关于使用协处理器执行浮点运算的CPU。为了告诉CPU使用它,存在特殊的汇编命令,如add.s单精度和add.d双精度。当我有一些C++代码时

关于计算机如何处理数字,我有一个非常普遍的问题

一般来说,计算机系统只知道二进制-0和1。所以在内存中,任何数字都是一个位序列。表示的数字是int还是float并不重要

但是什么时候像基于IEEE754标准的浮点数和两个补码之类的东西会进入游戏呢?这仅仅是编译器C/C++、,。。。还有VMs.NET/Java

所有整数都是用两个补码表示的,这是真的吗

我读过关于使用协处理器执行浮点运算的CPU。为了告诉CPU使用它,存在特殊的汇编命令,如add.s单精度和add.d双精度。当我有一些C++代码时,使用一个浮点,这样的汇编命令会在输出?

中。 我现在完全糊涂了。如果你能帮我,那就太好了

谢谢大家!! 斯特凡

一般来说,计算机系统只知道二进制-0和1。所以在内存中,任何数字都是一个位序列。表示的数字是int还是float并不重要

这对于内存中的表示是正确的。但计算机执行指令并将当前正在处理的数据存储在寄存器中。指令和寄存器都是专用的,对于其中的一些指令和寄存器,它们用于表示2的补码中的有符号整数,对于其他指令和寄存器,它们用于典型计算机上的IEEE 754 binary32和binary64算术

所以要回答你的第一个问题:

但是什么时候像基于IEEE754标准的浮点数和两个补码之类的东西会进入游戏呢?这仅仅是编译器C/C++、,。。。还有VMs.NET/Java

二的补码和IEEE754二进制浮点是非常多的选择,它提供了专门的指令和寄存器来处理这些格式

所有整数都是用两个补码表示的,这是真的吗


您可以任意表示整数。但是,如果您使用2的补码表示有符号整数,典型的ISA将提供有效操作它们的指令。如果你做了另一个选择,你将自己选择。

请每个问题回答一个问题。这里有一篇关于这个话题的文章经常被提及:@DmitryGrigoryev这篇文章根本没有回答这个问题。它涵盖了IEEE 754标准。很抱歉在一篇文章中提出了几个问题。我已经忘了这件事。谢谢你的文章!我相信这是一篇关于这个主题的好文章。寄存器并不是专门的,同一个寄存器可以容纳2的补码和BCD数。FPU寄存器可以保存IEEE 754数字和压缩二的补码整数。@DmitryGrigoryev正如我认为答案清楚的那样,寄存器的特殊之处在于,有一些指令可以根据其中的位表示的IEEE 754浮点数字进行计算,也可以用2的补码表示有符号整数。事实上,我不知道我应该做些什么来让它更清楚,但如果你认为这是一个糟糕的答案,请投反对票。我的观点是指令是专门的,而不是寄存器。在x86上,如果执行fadd,FP0中的值将被解释为IEEE754,如果执行paddb,相同的寄存器将被解释为2的补码中的压缩字节。还有一条指令会将同一寄存器解释为无符号。@Dmitry Grigoryev:对于x86体系结构来说可能是这样。我有一本Andrew Tanenbaum写的名为Computerarchitektur的书,在374页上说它取决于系统。有些计算机也有单独的小数和整数寄存器来执行任何指令。