9月17日笔试总结

常见数据类型的值的范围

1
2
3
4
5
6
unsigned   int    0 ~ 4294967295              (0 ~ 2^32 - 1)
int -2147483648 ~ 2147483647 (-2^31 ~ 2^31 -1)
unsigned long 0 ~ 4294967295 (0 ~ 2^32 - 1)
long -2147483648~2147483647 (-2^31 ~ 2^31 -1)
unsigned short 0 ~ 655375 (0 ~ 2^16 - 1)
short -32768~32767 (-2^15 ~ 2^15 - 1)

用户态切换到内核态3种方式

  • 系统调用
  • 异常
  • 外围设备中断

单精度和双精度问题

  1. 一个浮点数由三个部分组成:符号位S、指数部分(E)以及尾数部分M
  2. 单精度浮点数(float)总共由32位表示,其中尾数用23存储,加上小数点前有一位隐藏的1。所以尾数最大值为:2^(23+1) = 16777216,因为10^7 < 16777216 < 10^8,所以说单精度的有效位数位7位。
  3. 双精度浮点数(double)总共用64位来表示浮点数,其中尾数用52位存储,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。