Skip to content

Commit

Permalink
[add]: add index.md in web/glossary/bitwise_flags
Browse files Browse the repository at this point in the history
  • Loading branch information
IMHOJEONG committed Sep 4, 2023
1 parent c562e63 commit 12cd65a
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions files/ko/glossary/bitwise_flags/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: Bitwise flags
slug: Glossary/Bitwise_flags
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---

{{GlossarySidebar}}

**비트 플래그**는 메소드나 기타 코드 구조의 특정 사용이나 기능을 활성화하거나 비활성화하는 데 사용할 수 있는 변수 세트(일반적으로 간단한 숫자값)입니다. 비트 수준에서 작동하기 때문에 이 작업을 빠르고 효율적으로 수행할 수 있습니다. 동일한 그룹의 관련 플래그에는 일반적으로 단일 값(예. 16진수)에서 서로 다른 비트 위치를 나타내는 보색 값이 부여되므로 여러 플래그 설정을 단일 값으로 나타낼 수 있습니다.

예를 들어, {{domxref("WebGPU API", "WebGPU API", "", "nocode")}}에서 {{domxref("GPUBuffer")}} 객체 인스턴스는 {{domxref("GPUDevice.createBuffer()")}} 메소드를 사용해 생성됩니다. 이 메서드를 호출할 때, 해당 버퍼에 다양한 허가된 사용을 활성화하는 하나 이상의 플래그가 포함된 설명자에 `usage` 속성을 정의합니다.

```js
usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
```

이러한 값은 동일한 네임스페이스 내에 정의되며, 각 값은 16진수 값을 갖습니다.

| 사용 플래그 | 16진수 표현 | 십진수 해당 |
| ------------------------------ | ----------- | ----------- |
| `GPUBufferUsage.MAP_READ` | 0x0001 | 1 |
| `GPUBufferUsage.MAP_WRITE` | 0x0002 | 2 |
| `GPUBufferUsage.COPY_SRC` | 0x0004 | 4 |
| `GPUBufferUsage.COPY_DST` | 0x0008 | 8 |
| `GPUBufferUsage.INDEX` | 0x0010 | 16 |
| `GPUBufferUsage.VERTEX` | 0x0020 | 32 |
| `GPUBufferUsage.UNIFORM` | 0x0040 | 64 |
| `GPUBufferUsage.STORAGE` | 0x0080 | 128 |
| `GPUBufferUsage.INDIRECT` | 0x0100 | 256 |
| `GPUBufferUsage.QUERY_RESOLVE` | 0x0200 | 512 |

{{domxref("GPUBuffer.usage")}} 속성을 쿼리하면, 단일 10진수가 반환됩니다. 이 단일 10진수는 다양한 사용 플래그에 대한 다양한 10진수 값의 합계입니다. 위의 예시로 돌아가서, 이전에 지정된 사용법으로 생성된 `GPUBuffer`에 대해 `GPUBuffer.usage`를 쿼리하면 다음이 반환됩니다.

- `GPUBufferUsage.COPY_SRC`의 십진수에 해당하는 4
- `GPUBufferUsage.MAP_WRITE`의 10진수에 해당하는 2를 추가합니다.
- 6과 같습니다.

다양한 플래그에 대해 선택된 값으로 인해, 각 값 조합은 고유하므로, 프로그램은 단일 값에서 어떤 플래그가 설정되었는지 한눈에 알 수 있습니다. 또는, 비트 및 연산자를 사용하여 결합된 값에 어떤 플래그가 설정되어 있는지 쉽게 테스트할 수 있습니다.

```js
if (buffer.usage & GPUBufferUsage.MAP_WRITE) {
// 버퍼에 MAP_WRITE 사용이 있습니다.
}
```

## 같이 보기

- [비트별 플래그가 아름다운 이유](https://www.hendrik-erz.de/post/bitwise-flags-are-beautiful-and-heres-why)
- 위키백과의 [비트별 연산](https://en.wikipedia.org/wiki/Bitwise_operation)

0 comments on commit 12cd65a

Please sign in to comment.