数字存储的前值知识

  1. 计算机必须使用固定的位数来存储数字,无论存储的数字是大是小,在内存中占用的空间是固定的。
    2. n位的无符号整数能表示的数字是2^n个,取值范围是:0 ~ 2^n - 1
    3. n位的有符号整数能表示的数字是2^n个,取值范围是:-2^(n-1) ~ 2^(n-1) - 1
    4. 浮点数表示法可以用于表示整数和小数,目前分为两种标准:
    1. 32位浮点数:又称为单精度浮点数,它用1位表示符号,8位表示阶码,23位表示尾数
    2. 64位浮点数:又称为双精度浮点数,它用1位表示符号,11位表示阶码,52位表示尾数
    5. JS中的所有数字,均使用双精度浮点数保存

    类型化数组

    类型化数组,用于优化多个数组的存储。
    如例

    1. const arr1 = Float64Array.of(127)
    2. console.log("元素个数"+arr1.length)
    3. console.log("arr1[0]所占字节个数:"+arr1.byteLength)
    4. const arr = Int8Array.of(127)
    5. console.log("元素个数"+arr.length)
    6. console.log("arr[0]所占字节个数:"+arr.byteLength)

    image.png
    从控制台打印的结果可以看出,Float64Array使用啦8个字节,而Int8Array比它使用的字节少,假如堆内存有要求你会让用哪个?也不是都用Int8Array,用哪个需要看需求
    具体分为:

  • Int8Array: 8位有符号整数(-128 ~ 127)
    - Uint8Array: 8位无符号整数(0 ~ 255)
    - Int16Array: … 下面根据上面的公式自行计算他们的数字的区间
    - Uint16Array: …
    - Int32Array: …
    - Uint32Array: …
    - Float32Array:
    - Float64Array
    当心数字超过范围,会溢出 那Int8Array为例
    1. const arr = Int8Array.of(128)
    2. console.log(arr)
    3. const arr = Int8Array.of(129)
    4. console.log(arr)
    5. const arr = Int8Array.of(130)
    6. console.log(arr)
    image.pngimage.pngimage.png
    如控制台打印结果,溢出后会从最小位加上溢出的位数

    占用字节的多少

    Int8Array 每一个元素占用一个字节
    Int16Array 每一个元素占用2个字节
    Int32Array 每一个元素占用4个字节
    Float64Array 每一个元素占用8个字节

    如何创建数组

    ```javascript new 数组构造函数(长度)

数组构造函数.of(元素…)

数组构造函数.from(可迭代对象)

new 数组构造函数(其他类型化数组)

  1. <a name="Sy8jY"></a>
  2. ## 得到长度
  3. ```javascript
  4. 数组.length //得到元素数量
  5. 数组.byteLength //得到占用的字节数

其他的用法跟普通数组一致,但是:
-** 不能增加和删除数据,类型化数组的长度固定
-** 一些返回数组的方法,返回的数组是同类型化的新数组