bit를 통해 정수 표현

C++에서 int 자료형은 4 bytes의 크기를 가짐

정수를 표현하기 위해 사용되는 byte의 수에 따라서 표현할 수 있는 정수의 범위가 달라진다. 가장 왼쪽의 bit는 정수의 부호를 나타내기 때문에 위와 같은 범위의 수를 표현할 수 있다.

양의 정수에서 sign bit는 0이고, 음의 정수에서 sign bit는 1이다.

양의 정수에서는 나머지 bit가 모두 0일 때 0이고, 나머지 bit의 값이 커질수록 정수의 값이 커진다.

음의 정수에서는 나머지 bit가 모두 1일 때 -1이고, 나머지 bit의 값이 작아질수록 정수의 값이 작아진다.

4 bytes로 나타낼 수 있는 정수의 범위

bit operation

이진수의 곱셈

XOR 연산

XOR 연산은 두 bit가 다를 때만 1이 된다.

left shift 연산

right shift 연산

logical right shift 연산

새롭게 삽입되는 bit가 0이므로 shift 연산에서 부호를 신경 쓰지 않는다. 꺽쇠 기호 3개로 표현한다.

arithmetic right shift 연산

새롭게 삽입되는 bit가 기존 sign bit와 같으므로 부호가 보존된다. 꺽쇠 기호 2개로 표현한다.

bit operator 별 특징

OR

AND

XOR

다양한 bit 표현 만들기

다양한 bit 연산 구현

Get bit

정수 num을 bit로 표현했을 때, i번째 비트를 구한다.

Set bit

정수 num을 bit로 표현했을 때, i번째 bit를 1로 설정한다.

위의 예시에서는 9를 이진수 bit로 표현했을 때, 3번째 index에 있는 bit를 1로 설정한다.

Clear bit

정수 num을 bit로 표현했을 때, i번째 bit를 0으로 초기화한다.

Clear Left bits

정수 num을 bit로 표현했을 때, i번째 bit의 왼쪽 bit들을 모두 0으로 초기화한다.

Clear Right bits

정수 num을 bit로 표현했을 때, i번째 bit의 오른쪽 bit들을 모두 0으로 초기화한다.

Update bit

정수 num을 bit로 표현했을 때, i번째 bit를 val 값에 따라 업데이트한다.

출처

[자료구조 알고리즘] 비트연산 완전정복 - Bit Operation

Tags:

Categories:

Updated: