深入理解计算机系统

第二章

  • 1 .对于跨越多字节的程序对象,我们必须建立两个规则
    • 这个对象的地址是什么
    • 在内存中如何排列这些字节
    • 对于现在的大多数机器来说,多字节对象都被储存为连续的字节序列,对象的地址直接使用字节中最小的地址。
  • 2 .一般而言对于程序的地址通行的标准有两种,即为大端法和小端法,现在的处理器大部分都可以支持从大端或者小端任意开始。
    但是具体的使用会根据操作系统来进行变换,ios和安卓使用的是小端法,而绝大多数的Intel处理器也同样使用小端法,但是仍然存在有使用大端法的机器。
    所以当进行数据内存传输的时候,防止地址倒装现象, 所以一般而言都需要遵循网络通信标准来传输内存。

IEEE浮点数

由于基础的运用二进制来进行表示浮点数的方式在面对非常大的数或者非常小的数的时候会产生非常大的计算浪费,哪怕只是两个位数相距相对大的数都会造成这样的影响,因此IEEE制定了一个标准,分别使用32位和64位精度来划分浮点数,也就是通常所指的单精度和双精度,主要的差别在于他们其中对于数值的表示方法存在差别,尾数(有效数字)就会存在差别
  • float占用为1个符号位,8个指数位,23个尾数位,也就是说float的有效数字应该到2的23次方也就是7位,能够保证的精确有效位是6位,数据范围应该在-2128~2128
  • double占用为1个符号位,11个指数位,52个尾数位,有效数字应该在15~16个数据范围因为指数位多了三位,覆盖的数据范围就是float的8倍

你可能感兴趣的:(深入理解计算机系统)