View on GitHub

Cycle263 Blog

Stay hungry, stay foolish.

Blob vs ArrayBuffer vs TypeArray

二进制数组是JavaScript操作二进制数据的一个接口。(ArrayBuffer对象、TypedArray视图和DataView视图)。三者之间的关系可以理解为:Blob <-> ArrayBuffer <-> TypeArray <—> Array

简单说,ArrayBuffer对象代表原始的二进制数据,TypedArray视图用来读写简单类型的二进制数据,DataView视图用来读写复杂类型的二进制数据。

转换图

格式转换

其他概念

 举几个例子。正数 233 的二进制形式是 11101001,它用不同长度的无符号数和有符号数的表示如下图,红色的 0 表示符 号位。注意图中没有 8 位有符号数,因为 233 超出了 8 位有符号数的范围。

整数在计算机中的表示

再如,负数 -23 用不同长度的有符号数的表示如下图,红色的 1 表示符号位。-23 用 8 位有符号数表示的形式跟 233 用 8 位无符号数表示的形式是一样的,请读者自行验证。

整数在计算机中的表示

  -(1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。

  -(2)M表示有效数字,大于等于1,小于2。

  -(3)2^E表示指数位。

十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。

IEEE 754规定,对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M