2017.11.27作业

来源:互联网 发布:mac pro配置 编辑:程序博客网 时间:2024/06/07 17:24

1.浮点数在内存当中是如何储存的?

对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数),
1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示;
2、第30~23 bit为幂数,其读数值用e表示;
3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该小数的十进制值为x;
则按照规定,该浮点数的值用十进制表示为:
= (-1)^s   * (1 + x) * 2^(e - 127)
(-1)^a*(1+c)*2^(b-127)
对于49E48E68来说,
1、其第31 bit为0,即s = 0
2、第30~23 bit依次为100 1001 1,读成十进制就是147,即e = 147。
3、第22~0 bit依次为110 0100 1000 1110 0110 1000,也就是二进制的纯小数0.110 0100 1000 1110 0110 1000,其十进制形式为0.78559589385986328125,即x = 0.78559589385986328125。
这样,该浮点数的十进制表示
= (-1)^s   * (1 + x) * 2^(e - 127)
= (-1)^0   * (1+ 0.78559589385986328125) * 2^(147-127)
= 1872333

2.头文件是否区分大小写

Windows下的文件名是不区分大小写的。

3.如果有unsigned int两位相加分别注意什么?int与unsigned int相加时,应将int强制转换为unsigned int


两个兼容的不同类型的操作,哪个能表示更大的数就转为哪个类型。例如short+long,就要转为long;unsigned+signed,就要转为unsigned。

在32位机上
unsigned int 最大可表示2^32 - 1
int最大可表示2^31-1
这样int就转为了unsigned int,由于y<0,即y的最高位符号位是1,转为unsigned int后最高为不再是符号位,而是一个最高位的正数,于是两者相加就会是一个很大的正数了。




原创粉丝点击