비트 연산자 3.5.2
18 32 비트 수치 표현 : 00000000000000000000000000010010
첫 번째 31 비트가 정수 값, 마이너스 1 플러스 32 비트, 0으로 표시되는 값의 부호를 나타내고.
각 비트 31는 2의 거듭 제곱을 나타낸다. 첫번째 나타내는 0 번째 대표 1 등.
마찬가지로 부정적 이진 코드 저장에 수 만의 보수를 사용하여. 다음과 같은 세 가지 단계를 통해 이동해야합니다 :
- 절대 값은 바이너리 코드를 찾을 수
- 이진를 찾는 (1 교체 1 0 0 교환)
- 얻어진 이진 하나 + 1
바이너리 코드 요구 사항 18 :
바이너리 코드 (18)을 추구하는 1 :
0000 0000 0000 0000 0000 0000 0001 0010
도 2를 참조하면, 0과 1 상호 교환 된
1111 1111 1111 1111 1111 1111 1110 1101
3 이진 하나 + 1
1111 1111 1111 1111 1111 1111 1110 1101
+ 1
---------------------------------------
1111 1111 1111 1111 1111 1111 1110 1110
비트 NOT (NOT)
- 안티 리턴 코드 값을했다.
const num = 25;
num.toString(2); // '11001' <-- 十进制转二进制
// 00000000000000000000000000011001
const num2 = ~num;
console.log(num2); // -26,操作数的负数 -1
// 等同于
const num3 = -num - 1;
비트 연산 따라서 빨리 나타나는 하한값을 수행하고있다.
비트 단위 AND (AND)
및이 나타내고, 각 테이블의 다음 규칙은 AND 연산의 동일한 위치의 두 숫자에 따라, 두 개의 값들 중 하나와 정렬.
비트 값 | 두 번째 값의 비트 | 결과 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
조작 된 1 및 4 비트.
1 & 4; // 0
// 1 的二进制位
0000 0000 0000 0000 0000 0000 0000 0001
// 4 的二进制位
0000 0000 0000 0000 0000 0000 0000 0100
// AND --------------------------------
0000 0000 0000 0000 0000 0000 0000 0000
비트 단위 OR (OR)
| 대표.
비트 값 | 두 번째 값의 비트 | 결과 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
동작 또는 1 및 4 비트.
1 | 4; // 5
// 1 的二进制位
0000 0000 0000 0000 0000 0000 0000 0001
// 4 的二进制位
0000 0000 0000 0000 0000 0000 0000 0100
// OR --------------------------------
0000 0000 0000 0000 0000 0000 0000 0101
parseInt('00000000000000000000000000000101', 2); // 转十进制,5
비트 단위 배타적 OR (XOR)
^ 표현.
비트 값 | 두 번째 값의 비트 | 결과 |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
두 비트 값 만 1, 1을 반환합니다.
배타적 논리합 연산의 1 및 4 비트.
1 ^ 4; // 5
// 1 的二进制位
0000 0000 0000 0000 0000 0000 0000 0001
// 4 的二进制位
0000 0000 0000 0000 0000 0000 0000 0100
// XOR --------------------------------
0000 0000 0000 0000 0000 0000 0000 0101
parseInt('00000000000000000000000000000101', 2); // 转十进制,5
4, 4 비트 XOR 연산의.
4 ^ 4; // 0
// 4 的二进制位
0000 0000 0000 0000 0000 0000 0000 0100
// 4 的二进制位
0000 0000 0000 0000 0000 0000 0000 0100
// XOR --------------------------------
0000 0000 0000 0000 0000 0000 0000 0000
parseInt('00000000000000000000000000000000', 2); // 转十进制,0
좌 (<<)
왼쪽에있는 모든 비트 값은 지정된 자릿수 이동시킨다.
const val = 2; // 二进制:10
const val2 = val << 3; // 二进制:10000 十进制:16
서명 우측 시프트 (>>)
const val = 16; // 二进制:10000
const val2 = val >> 3; // 二进制:10 十进制:2
부호 우측 시프트 (>>>)
// -16 的二进制码
11111111111111111111111111110000
// -16 >>> 3
00011111111111111111111111111110 // 右移后 以 0 填充左侧的位
parseInt('00011111111111111111111111111110', 2); // 十进制:536870910