32位和64位OS中的双字节大小

Gra*_*ton 33 c# floating-point double 64-bit ieee-754

当我在32位和64位环境下运行我的应用程序时双倍大小有什么区别吗?

如果我没有弄错的话,32位环境中的双精度将在0之后占用16位数,而64位中的双位将占用32位,我是对的吗?

Joh*_*ica 65

不,IEEE 754双精度浮点数始终为64位.类似地,单精度float总是32位.

如果您的问题是专门针对C#和/或.NET(正如您的标记所示),则所有数据类型大小都是固定的,与您的系统架构无关.这与Java相同,但与C和C++不同,其中类型大小因平台而异.

在C和C++中,不同体系结构上的整数类型具有不同的大小是很常见的.例如,int在16位DOS中为16位宽,在Win32中为32位宽.然而,IEEE 754标准是无处不浮点运算是的大小floatdouble没有,你会发现在现实世界中的任何系统上有所不同- 20年前double为64位,所以今天它.

  • 值得注意的是,CLR(c#)和JVM是字节码VM,它必须可以跨架构移植(通过设计,有反例),这解释了无论主机如何类型都相同的原因.C/C++面向机器代码编译,因此通常具有ABI差异以最佳地利用其目标体系结构.这解释了差异. (8认同)

Lea*_*ner 10

在c#中,double总是8个字节(64位)


sta*_*son 8

它没有改变.

检查这个的简单方法是编写一个简单的控制台应用程序

Console.WriteLine(Double.MaxValue);
Run Code Online (Sandbox Code Playgroud)

并编译为x86和x64.