gpt4 book ai didi

c++ - 幕后如何将浮点值转换为整数

转载 作者:行者123 更新时间:2023-11-30 02:25:44 25 4
gpt4 key购买 nike

首先,我完全不知道数据的低级机器表示(因此,如果我误解/误解了某些事情,请多多包涵 - 尽管总是欢迎提出建议/纠正)

显然,所有数据都以 0 和 1 的序列形式呈现。

整数只是可以转换为任何 numeral system 的普通信息位。 (来自二进制)。

然而, float 表示为 sign + exponent + fraction(就 IEEE 754 浮点标准而言),它们实际上只是相同的旧位(0 和 1)确实可以转换(当然是不同的)到任何数字系统。


当您执行简单的强制转换操作(参见下面的示例)时,您如何“神奇地”获得正确的结果?:

double a = 5.12354e3; // 5123.54
int b = int(a); // 5123

sign + exponent + fraction 转换为sign + value 的计算机内部逻辑是什么?它似乎不仅仅是一个“普通”转换(之前有 4/8 个字节 - 之后有 4 个字节),对吧?

P.S.:如果我只是没有得到一个非常基本、显而易见的东西,抱歉。无论如何,请解释。

最佳答案

只需插入一条将 double 转换为整数的指令,每个具有 float 的处理器都有。

double a = 5.1e3; // 5123.54
MOVFD #5123.54, A(SP)
int b = int(a); // 5123
CVTDL A(SP), B(SP)

就其机制而言,您所要做的就是在尾数前插入一个 1 位( float 通常与隐式位一起存储);按指数移位;然后更正标志。

关于c++ - 幕后如何将浮点值转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43813730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com