在Javascript中处理二进制数据可以通过多种方式实现,以下是常见的方法及示例:
一、基础运算符
按位与(&) 仅当两个对应位都为1时结果为1,否则为0。 ```javascript
let a = 1010b; // 二进制1010
let b = 1100b; // 二进制1100
console.log(a & b); // 输出 1000b
```
按位或(|)
只要对应位中有一个为1,结果就为1。 ```javascript
console.log(a | b); // 输出 1110b
```
按位异或(^)
对应位不同则结果为1,相同为0。 ```javascript
console.log(a ^ b); // 输出 0110b
```
按位非(~)
取反操作,0变1,1变0。 ```javascript
console.log(~a); // 输出 -1011b(补码表示)
```
移位操作
- 左移(<<): 向左移动指定位数,右边补0。 ```javascript console.log(a << 1); // 输出 101000b ``` - 有符号右移(>>)
console.log(a >> 1); // 输出 101b
```
- 无符号右移(>>> 0):向右移动指定位数,左侧补0。 ```javascript
console.log(a >>> 1); // 输出 010b
```
二、二进制数据类型
Typed Arrays 通过`ArrayBuffer`和派生类型(如`Int8Array`、`Uint8Array`)操作二进制数据。 ```javascript
const buffer = new ArrayBuffer(8);
const int16Array = new Int16Array(buffer);
const uint8Array = new Uint8Array(buffer);
int16Array = 256; // 0x0000FF
uint8Array = 255; // 0xFF
console.log(int16Array); // 输出 [256, 0, 0, 0]
console.log(uint8Array); // 输出 [0, 0, 0, 255]
```
浮点数表示(IEEE 754)
Javascript使用64位浮点数表示,结构如下:
- 符号位(1位): 0为正,1为负 - 指数位(11位)
- 尾数位(52位):有效数字
```javascript
const num = 1337;
console.log(num.toString(2)); // 输出 101001000111
console.log((num >> 23) & 0xFF); // 提取尾数部分
```
三、进制转换
数值转二进制字符串 使用`toString(2)`方法。 ```javascript
const number = 1337;
console.log(number.toString(2)); // 输出 101001000111
```
二进制转数值
使用`parseInt(binaryString, 2)`或`parseFloat(binaryString, 2)`。 ```javascript
const binary = '101001000111';
console.log(parseInt(binary, 2)); // 输出 1337
console.log(parseFloat(binary, 2)); // 输出 1337
```
四、其他应用场景
字符编码: 通过`charCodeAt`获取字符的Unicode值(如`'A'.charCodeAt(0)`返回65)。- 文件操作
以上方法覆盖了Javascript中二进制运算、数据存储及转换的核心内容,可根据具体需求选择适用