/
index.md
68 lines (44 loc) · 1.92 KB
/
index.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
---
title: 비트 NOT (~)
slug: Web/JavaScript/Reference/Operators/Bitwise_NOT
---
{{jsSidebar("Operators")}}
비트 NOT 연산자(`~`)는 피연산자의 비트를 반전시킵니다. 다른 비트 연산자와 마찬가지로 피연산자를 32비트 정수로 변환합니다.
{{EmbedInteractiveExample("pages/js/expressions-bitwise-not.html")}}
## 구문
```
~a
```
## 설명
피연산자는 32비트 정수로 변환되며 일련의 비트(0과 1)로 표현됩니다. 32비트를 넘어가는 숫자는 최상위 비트를 기준으로 하여 삭제합니다. 예를 들어 다음과 같은 32비트 이상인 정수는 32비트 정수로 변환됩니다.
```
Before: 11100110111110100000000000000110000000000001
After: 10100000000000000110000000000001
```
피연산자의 각 비트는 반전됩니다.
`NOT` 연산에 대한 진리표는 다음과 같습니다.
| a | NOT a |
| --- | ----- |
| 0 | 1 |
| 1 | 0 |
```js
9 (base 10) = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
```
32비트 정수 피연산자는 [2의 보수](https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98)에 따라 반전됩니다. 즉, 최상위 비트는 음수인 정수를 표현하는 데 사용합니다.
어떤 수 `x`에 대해 NOT 비트 연산을 하면 `-(x + 1)`의 결과를 도출합니다. 예를 들면 `~-5`는 `4`로 계산됩니다.
32비트 표현을 사용하기 때문에 `~-1`과 `~4294967295` (2<sup>32</sup> - 1) 의 결과가 둘 다 `0`으로 계산되는 점을 유의해주세요.
## 예제
### 비트 NOT 연산 사용하기
```js
~0; // -1
~-1; // 0
~1; // -2
```
## 명세
{{Specifications}}
## 브라우저 호환성
{{Compat}}
## 같이 보기
- [비트 연산자](/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#%ED%95%A0%EB%8B%B9_%EC%97%B0%EC%82%B0%EC%9E%90)