3.5.2 비트 연산자 (연구 노트)

비트 연산자 3.5.2

18 32 비트 수치 표현 : 00000000000000000000000000010010

첫 번째 31 비트가 정수 값, 마이너스 1 플러스 32 비트, 0으로 표시되는 값의 부호를 나타내고.

각 비트 31는 2의 거듭 제곱을 나타낸다. 첫번째 나타내는 0 번째 대표 1 등.

IMG

마찬가지로 부정적 이진 코드 저장에 수 만의 보수를 사용하여. 다음과 같은 세 가지 단계를 통해 이동해야합니다 :

  • 절대 값은 바이너리 코드를 찾을 수
  • 이진를 찾는 (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

추천

출처www.cnblogs.com/lwl0812/p/11224899.html