double 可以表示 float 可以表示的每个值。
将 float 转换为 double 是否只需通过添加 0 来扩展尾数并通过填充符号位来扩展指数部分?
我在http://www.binaryconvert.com/index.html测试了一些数据。它以这种方式工作。但是我没有找到转换的任何官方定义。转换是否有任何角落案例不能以这种方式工作?
double 可以表示 float 可以表示的每个值。
将 float 转换为 double 是否只需通过添加 0 来扩展尾数并通过填充符号位来扩展指数部分?
我在http://www.binaryconvert.com/index.html测试了一些数据。它以这种方式工作。但是我没有找到转换的任何官方定义。转换是否有任何角落案例不能以这种方式工作?
这与 C 关系不大;它唯一的保证是从float
to转换double
必须保留该值。
所以你真的在问(大概)IEEE-754。您的描述至少有几种方式不成立:
单精度和双精度的指数具有不同的偏差。所以转换需要的不仅仅是符号扩展。
非正规数需要特殊处理(它们变成普通数)。
NaN 也可能需要特殊处理 - 区分信令和静默 NaN 取决于尾数的值。