如何将符号,尾数和指数存储在位中 [ ^ ] 规范化 [ ^ ]表示 如何乘以 r.Sign = a.Sign ^ b.Sign r.Mantissa = a.Mantissa * b.Mantissa r.Exponent = FLOAT_BIAS +(a .Exponent - FLOAT_BIAS)+(b.Exponent - FLOAT_BIAS) r.Normalize()how the sign, mantissa, and exponent are stored in bits[^]what normalizing[^] meanshow to multiply r.Sign = a.Sign ^ b.Sign r.Mantissa = a.Mantissa * b.Mantissa r.Exponent = FLOAT_BIAS + (a.Exponent - FLOAT_BIAS) + (b.Exponent - FLOAT_BIAS) r.Normalize() 这样在值范围的边界上不够健壮:在规范化之前,您可能已经出现溢出或溢出。但原则仍然是正确的。 出于技术目的,使用联合和位域: union的一个方面是无符号整数 另一个是表示符号,尾数和指数的位域const int S_BITS = 1;const int E_BITS = 8;const int M_BITS = 23;union Float{ unsigned long raw; struct { unsigned int mantissa : M_BITS; unsigned int exponent : E_BITS; unsigned int sign : S_BITS; } bits;}; 此内存布局取决于运行程序的计算机体系结构。例如。请参阅 MSDN:C ++位字段 [ ^ ] 祝你好运! 干杯 AndiThis memory layout depends on the computer architecture on which you run your program. E.g. see MSDN: C++ bit fields[^]Good luck!CheersAndi 这篇关于C ++中二进制格式的浮点数乘法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 06-16 18:05