#include <iostream>
#include <cstdint>
#include <cmath>
// 定义 IEEE 754 单精度浮点数结构体
struct IEEE754Single {
// 根据 IEEE 754 标准的定义,单精度浮点数包括 1 位符号位,8 位指数位和 23 位尾数位
uint32_t sign : 1; // 符号位
uint32_t exponent : 8; // 指数位
uint32_t fraction : 23; // 尾数位
};
// 定义计算 IEEE 754 单精度浮点数的函数
float calculateIEEE754(uint32_t sign, uint32_t exponent, uint32_t fraction) {
// 使用 IEEE 754 的公式计算单精度浮点数
float result = pow(-1, sign) * (1 + fraction / pow(2, 23)) * pow(2, exponent - 127);
return result;
}
int main() {
// 定义要相加的数值
int num1 = 137;
int num2 = 315;
int num3 = 299;
int num4 = 340;
// 计算总和并除以 4
float sum = (num1 + num2 + num3 + num4) / 4.0f;
// 将结果转换为 IEEE 754 单精度浮点数表示
IEEE754Single ieee_result;
ieee_result.sign = sum < 0; // 符号位
int exponent = static_cast<int>(log2(fabs(sum))) + 127; // 计算指数位
ieee_result.exponent = exponent; // 指数位
ieee_result.fraction = static_cast<uint32_t>((fabs(sum) - pow(2, exponent - 127)) * pow(2, 23)); // 尾数位
// 输出结果
std::cout << "IEEE 754 单精度浮点数表示:" << std::endl;
std::cout << "Sign: " << ieee_result.sign << std::endl;
std::cout << "Exponent: " << ieee_result.exponent << std::endl;
std::cout << "Fraction: " << ieee_result.fraction << std::endl;
// 输出十进制结果
std::cout << "十进制结果:" << sum << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPGNtYXRoPgoKLy8g5a6a5LmJIElFRUUgNzU0IOWNleeyvuW6pua1rueCueaVsOe7k+aehOS9kwpzdHJ1Y3QgSUVFRTc1NFNpbmdsZSB7CiAgICAvLyDmoLnmja4gSUVFRSA3NTQg5qCH5YeG55qE5a6a5LmJ77yM5Y2V57K+5bqm5rWu54K55pWw5YyF5ousIDEg5L2N56ym5Y+35L2N77yMOCDkvY3mjIfmlbDkvY3lkowgMjMg5L2N5bC+5pWw5L2NCiAgICB1aW50MzJfdCBzaWduIDogMTsgIC8vIOespuWPt+S9jQogICAgdWludDMyX3QgZXhwb25lbnQgOiA4OyAgLy8g5oyH5pWw5L2NCiAgICB1aW50MzJfdCBmcmFjdGlvbiA6IDIzOyAgLy8g5bC+5pWw5L2NCn07CgovLyDlrprkuYnorqHnrpcgSUVFRSA3NTQg5Y2V57K+5bqm5rWu54K55pWw55qE5Ye95pWwCmZsb2F0IGNhbGN1bGF0ZUlFRUU3NTQodWludDMyX3Qgc2lnbiwgdWludDMyX3QgZXhwb25lbnQsIHVpbnQzMl90IGZyYWN0aW9uKSB7CiAgICAvLyDkvb/nlKggSUVFRSA3NTQg55qE5YWs5byP6K6h566X5Y2V57K+5bqm5rWu54K55pWwCiAgICBmbG9hdCByZXN1bHQgPSBwb3coLTEsIHNpZ24pICogKDEgKyBmcmFjdGlvbiAvIHBvdygyLCAyMykpICogcG93KDIsIGV4cG9uZW50IC0gMTI3KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgLy8g5a6a5LmJ6KaB55u45Yqg55qE5pWw5YC8CiAgICBpbnQgbnVtMSA9IDEzNzsKICAgIGludCBudW0yID0gMzE1OwogICAgaW50IG51bTMgPSAyOTk7CiAgICBpbnQgbnVtNCA9IDM0MDsKCiAgICAvLyDorqHnrpfmgLvlkozlubbpmaTku6UgNAogICAgZmxvYXQgc3VtID0gKG51bTEgKyBudW0yICsgbnVtMyArIG51bTQpIC8gNC4wZjsKCiAgICAvLyDlsIbnu5PmnpzovazmjaLkuLogSUVFRSA3NTQg5Y2V57K+5bqm5rWu54K55pWw6KGo56S6CiAgICBJRUVFNzU0U2luZ2xlIGllZWVfcmVzdWx0OwogICAgaWVlZV9yZXN1bHQuc2lnbiA9IHN1bSA8IDA7ICAvLyDnrKblj7fkvY0KICAgIGludCBleHBvbmVudCA9IHN0YXRpY19jYXN0PGludD4obG9nMihmYWJzKHN1bSkpKSArIDEyNzsgIC8vIOiuoeeul+aMh+aVsOS9jQogICAgaWVlZV9yZXN1bHQuZXhwb25lbnQgPSBleHBvbmVudDsgIC8vIOaMh+aVsOS9jQogICAgaWVlZV9yZXN1bHQuZnJhY3Rpb24gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKGZhYnMoc3VtKSAtIHBvdygyLCBleHBvbmVudCAtIDEyNykpICogcG93KDIsIDIzKSk7ICAvLyDlsL7mlbDkvY0KCiAgICAvLyDovpPlh7rnu5PmnpwKICAgIHN0ZDo6Y291dCA8PCAiSUVFRSA3NTQg5Y2V57K+5bqm5rWu54K55pWw6KGo56S677yaIiA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIlNpZ246ICIgPDwgaWVlZV9yZXN1bHQuc2lnbiA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIkV4cG9uZW50OiAiIDw8IGllZWVfcmVzdWx0LmV4cG9uZW50IDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiRnJhY3Rpb246ICIgPDwgaWVlZV9yZXN1bHQuZnJhY3Rpb24gPDwgc3RkOjplbmRsOwoKICAgIC8vIOi+k+WHuuWNgei/m+WItue7k+aenAogICAgc3RkOjpjb3V0IDw8ICLljYHov5vliLbnu5PmnpzvvJoiIDw8IHN1bSA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0K