关于c语言大一新生基础知识解答

img

这么算你看看是你想要的不?
-45.85
单精度组成:1bit符号位+8bit指数部分+23bit小数部分

负值 符号位 1

整数45的二进制:101101

小数
0.85 x2 = 1.7 1
0.7 x2 = 1.4 1
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0

可写成 45.85 = 101101.11011001100110011001100110

变科学计数法
101101.11011001100110011001100110 = 1.0110111011001100110011001100110 x 2^5

根据IEEE规范 指数由8bit表示,值127为0,值128为1,
5次方是 127+5 = 132
132的二进制10000100
指数部分10000100

尾部 1. 0110111011001100110011001100110去掉1
0110111011001100110011001100110
拼一起 单精度组成:1bit符号位+8bit指数部分+23bit小数部分
1 10000100 01101110110011001100110
-45.85 单精度二进制表示为
1 10000100 01101110110011001100110

双精度组成:1bit符号位+11bit指数部分+52bit小数部分

负值 符号位 1

整数45的二进制:101101

小数
0.85 x2 = 1.7 1
0.7 x2 = 1.4 1
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0
0.4x2 = 0.8 0
0.8x2 = 1.6 1
0.6x2 = 1.2 1
0.2x2 = 0.4 0

45.85 = 101101.1101100110011001100110011001100110011001100110011001100110

根据IEEE规范 指数由11bit表示,值1023为0,值1024为1,

5次方是 1023+5 = 1028
1028的二进制100 0000 0100
指数部分100 0000 0100
尾部 1.011011101100110011001100110011001100110011001100110011001100110
去掉1
011011101100110011001100110011001100110011001100110011001100110
拼一起 双精度组成:1bit符号位+11bit指数部分+52bit小数部分
1 10000100 0110111011001100110011001100110011001100110011001100
-45.85 双精度二进制表示为
1 10000100 0110111011001100110011001100110011001100110011001100

谁来救救孩子啊

我也想帮你,可惜这么底层的东西我不懂,去搜了一下,也没学会。

精度溢出了

img

int main(int argc, char* argv[])
{                                   
    float x = -45.85;
    double y = -45.85;
    printf("%f\n", x);
    printf("%lf\n", x);
    return 0;
}

float为单精度,内存中占4个字节,有效数位是7位,取值范围为3.4E-38~3.4E+38。
double为双精度,占8个字节,有效数位是16位,取值范围为1.7E-308~1.7E+308。
还是是要在对应的范围内,结果是一样的。