📜  js 二进制 - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:22.330000             🧑  作者: Mango

JS 二进制 - Javascript

什么是二进制数字?

在计算机科学中,二进制是基于 2 的数字系统,它使用 0 和 1 两个数字来表示所有可能的数值。在二进制数字系统中,每一个数字位的值都是 2 的幂,如下图所示:

| 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |

例如,二进制数 1101 表示数字 13,因为 1x23 + 1x22 + 0x21 + 1x20 = 13。在计算机中,二进制数字用来表示数字、字符和图像等数据。

JS 中的二进制操作
位运算符

在 JavaScript 中,可以进行位运算操作。位运算符是处理二进制数字的运算符。下面是 JavaScript 中的位运算符:

| 运算符 | 描述 | | :----: | :--------------: | | & | 按位与 | | | | 按位或 | | ^ | 按位异或 (XOR) | | ~ | 按位非 (NOT) | | << | 左移运算符 | | >> | 右移运算符 | | >>> | 无符号右移 |

位运算实例

下面是一些使用位运算符的实例:

// 按位与
console.log(5 & 13); //输出 5

// 按位或
console.log(5 | 13); //输出 13

// 按位异或
console.log(5 ^ 13); //输出 8

// 按位非
console.log(~5); //输出 -6

// 左移运算符
console.log(5 << 1); //输出 10

// 右移运算符
console.log(5 >> 1); //输出 2

// 无符号右移
console.log(5 >>> 1); //输出 2
ArrayBuffer 和 DataView

在 JavaScript 中,可以使用 ArrayBuffer 和 DataView 来读取和写入二进制数据。ArrayBuffer 是一种内存管理机制,用于存储原始二进制数据。DataView 则是一个可以读取和写入 ArrayBuffer 的视图。

ArrayBuffer 实例

下面是一个使用 ArrayBuffer 的实例:

// 创建一个长度为 16 字节的 ArrayBuffer
const buffer = new ArrayBuffer(16);

// 将 ArrayBuffer 填充为 8 个 0 和 8 个 1 的二进制数
new Uint8Array(buffer).set([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);

// 打印 ArrayBuffer 中的二进制数
console.log(new Uint8Array(buffer)); //输出 [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
DataView 实例

下面是一个使用 DataView 的实例:

// 创建一个长度为 16 字节的 ArrayBuffer
const buffer = new ArrayBuffer(16);

// 将 ArrayBuffer 填充为 8 个 0 和 8 个 1 的二进制数
new Uint8Array(buffer).set([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);

// 使用 DataView 读取 ArrayBuffer 中的值
const view = new DataView(buffer);

// 打印前 4 个字节中的二进制数
console.log(view.getUint32(0)); //输出 15
结论

JavaScript 中的位运算符、ArrayBuffer 和 DataView 提供了一种方便的方式来处理和操作二进制数据。如果您需要在 JavaScript 应用程序中读取或写入二进制数据,这些功能都将非常有用。